pax_global_header00006660000000000000000000000064147551060570014524gustar00rootroot0000000000000052 comment=901fdec1208d11c293e43add60fe5c143f0817a7 ibus-anthy-1.5.17/000077500000000000000000000000001475510605700137025ustar00rootroot00000000000000ibus-anthy-1.5.17/.github/000077500000000000000000000000001475510605700152425ustar00rootroot00000000000000ibus-anthy-1.5.17/.github/ISSUE_TEMPLATE.md000066400000000000000000000021351475510605700177500ustar00rootroot00000000000000*** The template file at the root(.github/foo.md) is no longer used in GitHub issue *** 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`) ibus-anthy version?: (Open "IBus Anthy preferences" dialog (`ibus-setup-anthy`) from IBus panel menu or ibus-setup, and select "About" tab) 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): ibus-anthy-1.5.17/.github/ISSUE_TEMPLATE/000077500000000000000000000000001475510605700174255ustar00rootroot00000000000000ibus-anthy-1.5.17/.github/ISSUE_TEMPLATE/bug_report.yml000066400000000000000000000072441475510605700223270ustar00rootroot00000000000000name: Bus Report Template description: | Please fill in the following items if you don't know the root cause. assignees: - fujiwarat body: - type: markdown attributes: value: "Please describe the issue title to be able to identify your issue against others." - type: markdown attributes: value: "Wrong title - \"ibus typing not work with any applications\". Good title - \"Cannot output multi-byte strings with gedit\" or \"Cannot switch keyboard layouts with Super-space in Wayland\" or \"String output is slow with firefox in Cinnamon\"" - type: input id: distro attributes: label: Distribution and Version description: Which distribusion and version? Check /etc/fedora-release placeholder: Fedora 41 validations: required: true - type: input id: desktop attributes: label: Desktop Environment and Version description: | Which desktop environment and version? Check $XDG_CURRENT_DESKTOP and your ISO image. placeholder: GNOME 3.24 validations: required: true - type: dropdown id: session attributes: label: Session Type description: Which session type? Check $XDG_SESSION_TYPE options: - Wayland - X11 default: 0 validations: required: true - type: input id: application attributes: label: Application and Version description: Which application and version? placeholder: gedit 3.24, leafpad, kate, xterm validations: required: true - type: input id: version-core attributes: label: IBus version description: Run `ibus version` placeholder: 1.5.31 validations: required: true - type: input id: version attributes: label: ibus-anthy Version description: | Open "IBus Anthy preferences" dialog (`ibus-setup-anthy`) from IBus panel menu or ibus-setup, and select "About" tab. placeholder: 1.5.16 validations: required: true - type: textarea id: description attributes: label: Issue Description description: Please describe the issue summary. validations: required: false - type: textarea id: reproducing attributes: label: Steps to Reproduce description: | How do you trigger this bug? Please walk us through it step by step. value: | 1. 2. 3. render: bash validations: required: true - type: textarea id: inevitability attributes: label: | Can you reproduce your problem when you restart ibus-daemon? (yes / no) description: | Please answer "yes" or "no" and also complement your issue as needed. Run `ibus exit` and `ibus-daemon --xim &` validations: required: true - type: textarea id: error_messages attributes: label: | Do you see any errors when you run ibus-daemon with the verbose option? description: | Run `ibus-daemon --xim --verbose &` and look at the output when you encounter your problem. You might need to run `journalctl` for GNOME sessions. validations: required: false - type: textarea id: error_config attributes: label: | Can you reproduce your problem with a new user account instead of the current your account? (yes / no) description: | Please answer "yes" or "no" and also complement your issue as needed. validations: required: true - type: textarea id: note attributes: label: | Add any other context about the problem here. validations: required: false ibus-anthy-1.5.17/.github/workflows/000077500000000000000000000000001475510605700172775ustar00rootroot00000000000000ibus-anthy-1.5.17/.github/workflows/main.yml000066400000000000000000000114261475510605700207520ustar00rootroot00000000000000name: CI on: push: branches: [ main ] pull_request: jobs: version: runs-on: ubuntu-latest strategy: fail-fast: false matrix: container: ["fedora:41", "fedora:42", "ubuntu:jammy"] steps: - name: Check container sha tags run: | docker pull "${{ matrix.container }}" docker inspect "${{ matrix.container }}" --format=${{ '{{.RepoDigests}}{{.Created}}' }} build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: container: ["fedora:41", "fedora:42", "ubuntu:jammy"] container: image: ${{ matrix.container }} steps: - name: Install distro packages env: # For autogen.sh UBUNTU_PACKAGES_AUTOGEN: > autopoint strace # For make from # https://packages.ubuntu.com/search?searchon=sourcenames&keywords=ibus-anthy UBUNTU_PACKAGES_MAKE: > desktop-file-utils gettext gir1.2-ibus-1.0 libanthy-dev libdconf-dev libgirepository1.0-dev libglib2.0-dev libgtk-3-bin libgtk-3-dev libtool pkg-config python3-all # for make check UBUNTU_PACKAGES_CI_KEY: > ibus python3-pip FEDORA_PACKAGES_MAKE: > anthy-unicode-devel desktop-file-utils dconf-devel gettext-devel git gtk3-devel gobject-introspection-devel ibus-devel libtool python3-devel python3-gobject # for ibus-keypress FEDORA_PACKAGES_CI_KEY: > gnome-shell gnome-shell-extension-no-overview libXtst-devel python3-pycotap FEDORA_PACKAGES_DISTRO: > patch procps-ng strace run: | case "${{ matrix.container }}" in ubuntu*) cat /etc/lsb-release echo "apt-get update -qq -y" apt-get update -qq -y echo "apt-get install -q -y git" apt-get install -q -y git PACKAGES=$(echo "$UBUNTU_PACKAGES_AUTOGEN" | tr -d '\n') PACKAGES=$(echo "$PACKAGES $UBUNTU_PACKAGES_MAKE" | tr -d '\n') PACKAGES=$(echo "$PACKAGES $UBUNTU_PACKAGES_CI_KEY" | tr -d '\n') echo "apt-get install -y $PACKAGES" apt-get install -y $PACKAGES dpkg -l | grep anthy ;; fedora*) cat /etc/fedora-release DNF=dnf echo "$DNF -y update" $DNF -y update echo "$DNF -y install git which" $DNF -y install git which PACKAGES=$(echo "$FEDORA_PACKAGES_MAKE" | tr -d '\n') PACKAGES=$(echo "$PACKAGES $FEDORA_PACKAGES_CI_KEY" | tr -d '\n') PACKAGES=$(echo "$PACKAGES $FEDORA_PACKAGES_DISTRO" | tr -d '\n') echo "$DNF -y install $PACKAGES" $DNF -y install $PACKAGES ;; *) echo "Not supported ${{ matrix.container }}" ls /etc/*release cat /etc/*release exit 1 ;; esac pwd echo $GITHUB_WORKSPACE ls -a - uses: actions/checkout@v2 with: #repository: ibus/ibus-anthy fetch-depth: 200 - name: Fetch git tags run: | pwd id ls -al git config --global --add safe.directory $GITHUB_WORKSPACE git branch git fetch --prune --unshallow --tags echo $PATH - name: Run autogen # configure options from # https://salsa.debian.org/debian/ibus/-/blob/master/debian/rules run: > ./autogen.sh --libexecdir=/usr/lib/ibus --with-layout='default' --with-python=python3 --with-hotkeys --with-on-off-keys="'Zenkaku_Hankaku', 'Ctrl+space', 'Ctrl+J'" --enable-installed-tests --disable-static - name: Run make # UTF-8 locale is required for sed 'y/0123456789/0123456789/' # # 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 run: > env LANG=C.UTF-8 make distcheck VERBOSE=1 DESTDIR="$HOME/build/$USER/dest" - name: Desktop file validation run: | make -C setup/python3 ibus-setup-anthy.desktop echo "desktop-file-validate ./setup/python3/ibus-setup-anthy.desktop" desktop-file-validate ./setup/python3/ibus-setup-anthy.desktop ibus-anthy-1.5.17/.gitignore000066400000000000000000000005301475510605700156700ustar00rootroot00000000000000*.pyc *.la *.lo *.loT *.o *.so *~ tags Makefile.qmake Makefile Makefile.in .deps .libs ABOUT-NLS INSTALL aclocal.m4 autom4te.cache compile config.guess config.h config.h.in config.log config.rpath config.status config.sub configure depcomp gtk-doc.make install-sh libtool ltmain.sh missing stamp-h1 py-compile ibus-anthy*.tar.* ibus-anthy.spec ibus-anthy-1.5.17/.travis.yml000066400000000000000000000026401475510605700160150ustar00rootroot00000000000000language: c compiler: gcc os: linux # Require gettext-0.19.8 dist: focal branches: only: - main arch: - amd64 #- ppc64le #- s390x #- arm64 addons: apt: packages: # For autogen.sh - autopoint # For make from # https://packages.ubuntu.com/search?searchon=sourcenames&keywords=ibus-anthy - desktop-file-utils - gir1.2-ibus-1.0 - gobject-introspection - gettext - libanthy-dev - libgirepository1.0-dev - libglib2.0-dev - pkg-config - python3-dev - python3-gi jobs: include: - name: Build before_script: - sudo apt-get -qq update script: - set -e - git config pull.rebase false - git pull --depth=200 # configure options from # https://salsa.debian.org/debian/ibus-anthy/-/blob/master/debian/rules - > ./autogen.sh --libexecdir=/usr/lib/ibus --with-layout='default' --with-python=python3 --with-hotkeys --with-on-off-keys="'Zenkaku_Hankaku', 'Ctrl+space', 'Ctrl+J'" --enable-installed-tests --disable-static # 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 VERBOSE=1 DESTDIR="$HOME/build/$USER/dest" - > desktop-file-validate ./setup/python3/ibus-setup-anthy.desktop ibus-anthy-1.5.17/AUTHORS000066400000000000000000000004241475510605700147520ustar00rootroot00000000000000 Huang Peng Hideaki ABE Takao Fujiwara Translators: ----------- fr.po: Humbert Julien zh_CN.po: Huang Peng ja.po: UTUMI Hirosi ibus-anthy-1.5.17/COPYING000066400000000000000000000431031475510605700147360ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ibus-anthy-1.5.17/ChangeLog000066400000000000000000000000001475510605700154420ustar00rootroot00000000000000ibus-anthy-1.5.17/Makefile.am000066400000000000000000000051561475510605700157450ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2025 Takao Fujiwara # Copyright (c) 2007-2025 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. SUBDIRS = \ m4 \ po \ data \ gir \ engine \ icons \ setup \ tests \ $(NULL) ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = \ autogen.sh \ ibus-anthy.spec.in \ python-config.py \ $(NULL) noinst_DIST = \ $(NULL) DISTCLEANFILES = \ po/stamp-it \ $(NULL) dist-hook: if test -d .git ; then \ git log --name-status --date=iso > $(distdir)/ChangeLog ; \ PREV_MICRO_VERSION=`expr $(PACKAGE_VERSION_MICRO) - 1`; \ PREV_VERSION=\ "$(PACKAGE_VERSION_MAJOR).$(PACKAGE_VERSION_MINOR).$$PREV_MICRO_VERSION"; \ echo "Changes in $(PACKAGE_NAME) $(PACKAGE_VERSION)" \ > $(distdir)/NEWS; \ echo "" >> $(distdir)/NEWS; \ git shortlog $$PREV_VERSION...$(PACKAGE_VERSION) \ >> $(distdir)/NEWS; \ echo "" >> $(distdir)/NEWS; \ git log $$PREV_VERSION...$(PACKAGE_VERSION) --reverse \ --pretty=format:'%s (%an) %h' >> $(distdir)/NEWS; \ fi rpm: dist @PACKAGE_NAME@.spec rpmbuild -bb \ --define "_sourcedir `pwd`" \ --define "_builddir `pwd`" \ --define "_srcrpmdir `pwd`" \ --define "_rpmdir `pwd`" \ --define "_specdir `pwd`" \ @PACKAGE_NAME@.spec srpm: dist @PACKAGE_NAME@.spec rpmbuild -bs \ --define "_sourcedir `pwd`" \ --define "_builddir `pwd`" \ --define "_srcrpmdir `pwd`" \ --define "_rpmdir `pwd`" \ --define "_specdir `pwd`" \ @PACKAGE_NAME@.spec @PACKAGE_NAME@-@PACKAGE_VERSION@.%.sum: @PACKAGE_NAME@-@PACKAGE_VERSION@.% f=`basename $@ .sum`; \ printf "cksum %s %s %s\n" `cksum $$f` > $@; \ printf "sha1sum %s %s\n" `sha1sum $$f` >> $@; \ printf "sha256sum %s %s\n" `sha256sum $$f` >> $@; \ printf "sha512sum %s %s\n" `sha512sum $$f` >> $@; \ $(NULL) clean-rpm: $(RM) -r "`uname -i`" clean-local: clean-rpm ibus-anthy-1.5.17/NEWS000066400000000000000000000000001475510605700143670ustar00rootroot00000000000000ibus-anthy-1.5.17/README000066400000000000000000000115101475510605700145600ustar00rootroot00000000000000ibus-anthy It is a Japanese input engine for IBus. Installation ============ The following is the online document: https://github.com/ibus/ibus/wiki/Install #1. Build & Install IBus * Obtain source code IBus source code can either be download from IBus download page (https://github.com/ibus/ibus/releases) (If you use ibus for the first time, the download page is more stable than git.) $ zcat ibus-xx.tar.gz | tar xfv - $ cd ibus-xx * The 'xx' is a version number. or obtained from git with following commands: $ git clone git://github.com/ibus/ibus.git ibus $ cd ibus * 'git clone --help' shows the usage. * Build and Install After source code is extracted from tarball or git, use following command to build and install: $ ./autogen.sh --prefix='/usr' --sysconfdir='/etc' --libdir='/usr/lib' \ --enable-gtk-doc $ make $ sudo make install (Change the paths '/usr', '/etc', '/usr/lib' according to your system configuration.) or if you use Linux system, probably rpmbuild is easier to build applications. # cp ibus-xx.tar.gz /usr/src/$distributer/SOURCE # rpmbuild -bp ibus/ibus.spec.in # rpmbuild -bb ibus/ibus.spec.in * Register IBus as a Gtk immodule For i386 $ sudo update-gtk-immodules i386-redhat-linux-gnu or $ sudo gtk-query-immodules-2.0-32 \ /usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so >> \ /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules For x86_64 $ sudo update-gtk-immodules x86_64-redhat-linux-gnu or $ sudo gtk-query-immodules-2.0-64 \ /usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so >> \ /etc/gtk-2.0/x86_64-redhat-linux-gnu/gtk.immodules (Replace the string i386-redhat-linux-gnu or path /usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so with the setting that matches your system.) * Update icon caches $ ls /usr/share/icons/*/*/*/ibus* /usr/share/icons/hicolor/16x16/apps/ibus-keyboard.png /usr/share/icons/hicolor/22x22/apps/ibus-keyboard.png /usr/share/icons/hicolor/24x24/apps/ibus-keyboard.png /usr/share/icons/hicolor/32x32/apps/ibus-keyboard.png /usr/share/icons/hicolor/48x48/apps/ibus-keyboard.png /usr/share/icons/hicolor/scalable/apps/ibus-keyboard.svg $ sudo gtk-update-icon-cache /usr/share/icons/hicolor #2. Build & Install Anthy Download anthy source from Anthy Web (http://en.sourceforge.jp/projects/anthy/) $ zcat anthy-xx.tar.gz | tar xfv - $ cd anthy $ ./configure --prefix=/usr $ make $ sudo make install * The 'xx' is a version number. #3. Build & Install Kasumi Kasumi is not required but probably useful for you. Download kasumi source from Kasumi Web (http://en.sourceforge.jp/projects/kasumi/) $ zcat kasumi-xx.tar.gz | tar xfv - $ cd kasumi $ ./configure --prefix=/usr $ make $ sudo make install * The 'xx' is a version number. #4. Build & Install IBus Anthy Download ibus-anthy source from IBus download page (https://github.com/ibus/ibus-anthy/releases) or Use git clone git://github.com/ibus/ibus-anthy.git ibus-anthy $ zcat ibus-anthy-xx.tar.gz | tar xfv - $ cd ibus-anthy $ ./autogen.sh --prefix=/usr $ make $ sudo make install * The 'xx' is a version number. or if you use Linux system, probably rpmbuild is easier to build applications. # cp ibus-anthy-xx.tar.gz /usr/src/$distributer/SOURCE # rpmbuild -bp ibus-anthy/ibus-anthy.spec.in # rpmbuild -bb ibus-anthy/ibus-anthy.spec.in or if you use Linux system, probably you can install rpm with yum. # yum install --enablerepo=rawhide ibus-anthy #5. Run iBus * Run ibus-daemon to start ibus daemon with either way: * Distribution tool likes im-chooser, im-switch * Add a new /etc/xdg/autostart/ibus.desktop to invoke 'ibus-daemon --xim' * Manual $ pkill -9 ibus $ ps -ef | grep ibus $ /usr/bin/ibus-daemon --xim & After ibus-daemin is invoked, Run ibus-setup to set the preference, enable input methods, also start ibus daemon. e.g. $ ps -ef | grep ibus foo 15735 15518 0 11:30 pts/3 00:00:17 /usr/bin/ibus-daemon --xim foo 20037 15735 0 12:58 pts/3 00:00:00 /usr/libexec/ibus-gconf foo 20039 15735 0 12:58 pts/3 00:00:06 python /usr/share/ibus/ui/gtk/main.py foo 20041 1 0 12:58 pts/3 00:00:00 /usr/libexec/ibus-x11 --kill-daemon foo 20042 15735 0 12:58 pts/3 00:00:01 python /usr/share/ibus-anthy/engine/main.py --ibus #6. Run gnome, kde or old X applications * Set following environment varible for Gtk: $ GTK_IM_MODULE=ibus For KDE: $ QT_IM_MODULE=ibus and other X applications $ XMODIFIERS="@im=ibus" e.g. $ env GTK_IM_MODULE=ibus gedit To enable input method, Type Ctrl + Space. Bug Reports =========== https://github.com/ibus/ibus/wiki/BugReport Questions ========= http://groups.google.com/group/ibus-user http://groups.google.com/group/ibus-devel Also refer AUTHORS file ibus-anthy-1.5.17/autogen.sh000077500000000000000000000017721475510605700157120ustar00rootroot00000000000000#!/bin/sh # Run this to generate all the initial makefiles, etc. test -n "$srcdir" || srcdir=$(dirname "$0") test -n "$srcdir" || srcdir=. olddir=$(pwd) cd "$srcdir" (test -f configure.ac) || { echo "*** ERROR: Directory '$srcdir' does not look like the top-level project directory ***" exit 1 } # shellcheck disable=SC2016 PKG_NAME=$(autoconf --trace 'AC_INIT:$1' configure.ac) if [ "$#" = 0 -a "x$NOCONFIGURE" = "x" ]; then 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 fi autoreconf --verbose --force --install || exit 1 cd "$olddir" if [ "$NOCONFIGURE" = "" ]; then $srcdir/configure "$@" || exit 1 if [ "$1" = "--help" ]; then exit 0 else echo "Now type 'make' to compile $PKG_NAME" || exit 1 fi else echo "Skipping configure process." fi ibus-anthy-1.5.17/codereview.settings000066400000000000000000000001531475510605700176170ustar00rootroot00000000000000# This file is used by "git cl" to get code review information. CODE_REVIEW_SERVER: codereview.appspot.com ibus-anthy-1.5.17/configure.ac000066400000000000000000000401761475510605700162000ustar00rootroot00000000000000# vim:set et ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2025 Takao Fujiwara # Copyright (c) 2007-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. dnl - if not 1, append datestamp to the version number. m4_define([ibus_anthy_released], [1]) m4_define([ibus_anthy_major_version], [1]) m4_define([ibus_anthy_minor_version], [5]) m4_define([ibus_anthy_micro_version], [17]) m4_define([ibus_abi_current], [5]) m4_define([ibus_abi_revision], [m4_eval(100 * ibus_anthy_minor_version + ibus_anthy_micro_version)]) m4_define([ibus_abi_age], [0]) m4_define(ibus_maybe_datestamp, m4_esyscmd([if test x]ibus_anthy_released[ != x1; then date +.%Y%m%d | tr -d '\n\r'; fi])) m4_define([ibus_anthy_version], ibus_anthy_major_version.ibus_anthy_minor_version.ibus_anthy_micro_version[]ibus_maybe_datestamp) m4_define([ibus_required_version], [1.5.0]) m4_define([glib_required_version], [2.26.0]) AC_INIT([ibus-anthy], [ibus_anthy_version], [https://github.com/ibus/ibus-anthy/issues],[ibus-anthy]) AM_INIT_AUTOMAKE([1.10]) AC_GNU_SOURCE AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) dnl - define PACKAGE_VERSION_* variables AS_VERSION AS_NANO AM_SANITY_CHECK AM_MAINTAINER_MODE(enable) AC_DISABLE_STATIC AC_PROG_CC AM_PROG_CC_C_O AC_PROG_CXX AC_HEADER_STDC LT_INIT dnl - For dislpay Date m4_define(ibus_datedisplay, m4_esyscmd(date '+%a %b %d %Y' | tr -d '\n\r')) DATE_DISPLAY="ibus_datedisplay" AC_SUBST(DATE_DISPLAY) dnl - check anthy PKG_CHECK_MODULES(ANTHY, [anthy-unicode], [ANTHY_PC=anthy-unicode], [ PKG_CHECK_MODULES(ANTHY, [anthy], [ANTHY_PC=anthy]) ]) AC_SUBST(ANTHY_PC) CFLAGS_backup="$CFLAGS" CFLAGS="$ANTHY_CFLAGS $CFLAGS" AC_CHECK_DECLS([ NTH_UNCONVERTED_CANDIDATE, NTH_KATAKANA_CANDIDATE, NTH_HIRAGANA_CANDIDATE, NTH_HALFKANA_CANDIDATE],, AC_MSG_ERROR([Could not find NTH_*_CANDIDATE values in anthy.h]), [[#include ]]) CFLAGS="$CFLAGS_backup" PKG_CHECK_MODULES(GOBJECT2, [ gobject-2.0 >= glib_required_version ]) dnl - GObject introspection GOBJECT_INTROSPECTION_REQUIRE([0.6.8]) dnl - check libanthy directory AC_ARG_WITH(anthygobject-libdir, [AC_HELP_STRING([--with-anthygobject-libdir=PATH], [file path of libanthygobject.so])], [ANTHY_GOBJECT_LIBDIR="$withval"], [ANTHY_GOBJECT_LIBDIR='$(libdir)']) AC_SUBST(ANTHY_GOBJECT_LIBDIR) dnl - check anthygir directory AC_ARG_WITH(anthygoject-girdir, [AC_HELP_STRING([--with-anthygobject-girdir=PATH], [file path of anthy.gir])], [ANTHY_GOBJECT_GIRDIR="$withval"], [ANTHY_GOBJECT_GIRDIR='$(datadir)/gir-1.0']) AC_SUBST(ANTHY_GOBJECT_GIRDIR) dnl - check anthygir directory AC_ARG_WITH(anthygobject-typelibsdir, [AC_HELP_STRING([--with-anthygobject-typelibsdir=PATH], [file path of anthy.typelibs])], [ANTHY_GOBJECT_TYPELIBSDIR="$withval"], [ANTHY_GOBJECT_TYPELIBSDIR='$(libdir)/girepository-1.0']) AC_SUBST(ANTHY_GOBJECT_TYPELIBSDIR) dnl - check env AC_PATH_PROG(ENV_IBUS_TEST, env) AC_SUBST(ENV_IBUS_TEST) dnl - define python version AC_ARG_WITH(python, AS_HELP_STRING([--with-python[=PATH]], [Select python2 or python3]), [PYTHON=$with_python], [] ) dnl export $pyexecdir using existent $PYTHON AM_PATH_PYTHON([2.5]) dnl Decided to separate python3 directory from python2 directory here dnl because engine/table.py includes unicode array so it's better to dnl use __future__.unicode_literals. dnl python3 string are always str. dnl In case __future__.unicode_literals is imported, all the literal dnl 'a' is treated as unicode and u'a' is not needed in python2. dnl But str is not unicode so we need to convert str to unicode in dnl python2 for all non-literal variables likes return values of dnl gettext, IBusConfig.get_value, get methods in GTK+ and so on. dnl It would causes to complicate python2 codes if merge python2 and dnl python3 in the same file. dnl if sys.version < '3': dnl return unicode(gettext(a), 'utf-8') dnl else: dnl return gettext(a) case "$PYTHON_VERSION" in 3.*) enable_python3=yes enable_python2=no ;; *) enable_python3=no enable_python2=yes ;; esac AM_CONDITIONAL([ENABLE_PYTHON2], [test x"$enable_python2" = x"yes"]) AM_CONDITIONAL([ENABLE_PYTHON3], [test x"$enable_python3" = x"yes"]) dnl - check the supported ibus version AC_MSG_CHECKING([if your ibus version is supported]) IBUS_VERSION_TEST=" from gi.repository import IBus def _ibus_check_version(v): major = IBus.MAJOR_VERSION minor = IBus.MINOR_VERSION micro = IBus.MICRO_VERSION if (major, minor, micro) < tuple(map(int, (v.split('.')))): raise ValueError('Required ibus %s but version of ibus is %d.%d.%d' % \ (v, major, minor, micro)) _ibus_check_version('ibus_required_version') exit(0) " $PYTHON -c "$IBUS_VERSION_TEST" if test $? -eq 0; then AC_MSG_RESULT([yes]) else AC_MSG_ERROR([no]) fi dnl - engine-env AC_MSG_CHECKING([what are the enviroments for ibus-engine-anthy]) AC_ARG_WITH(engine-env, [AC_HELP_STRING([--engine-env=ENVIRONMENTS], [ibus-engine-anthy environments likes "LD_LIBRARY_PATH=/usr/lib/anthy" for libanthy.so. default is none])], [engine_env="$withval"], [engine_env='none']) AC_MSG_RESULT($engine_env) ENV_IBUS_ENGINE="" if test x"$engine_env" != xnone; then ENV_IBUS_ENGINE="$ENV_IBUS_TEST $engine_env" fi AC_SUBST(ENV_IBUS_ENGINE) dnl - check pygtk2 AC_MSG_CHECKING([whether you enable pygtk2 anthy]) AC_ARG_ENABLE(pygtk2-anthy, AS_HELP_STRING([--enable-pygtk2-anthy=no/yes], [Install pygtk2 anthy default=no]), [], enable_pygtk2_anthy=no) AC_MSG_RESULT($enable_pygtk2_anthy) if test x"$enable_pygtk2_anthy" = xyes; then AM_CONDITIONAL(HAVE_PYGTK2_ANTHY, true) dnl - check swig AC_PATH_PROG(SWIG, swig) if test x"$SWIG" = x""; then AC_MSG_ERROR([can not find swig]) fi AC_SUBST(SWIG) AC_PATH_PROG(PYTHON_CONFIG, python$PYTHON_VERSION-config) if test x"$PYTHON_CONFIG" = x""; then AC_PATH_PROG(PYTHON_CONFIG, python-config-$PYTHON_VERSION) fi if test x"$PYTHON_CONFIG" = x""; then AC_PATH_PROG(PYTHON_CONFIG, python-config) fi if test x"$PYTHON_CONFIG" != x""; then PYTHON_CFLAGS=`$PYTHON_CONFIG --includes` PYTHON_LIBS=`$PYTHON_CONFIG --libs` else PYTHON_CFLAGS=`$PYTHON $srcdir/python-config.py --includes` PYTHON_LIBS=`$PYTHON $srcdir/python-config.py --libs` fi AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_LIBS) else AM_CONDITIONAL(HAVE_PYGTK2_ANTHY, false) fi dnl - check file path of Anthy zipcode.t AC_ARG_WITH(anthy-zipcode, [AC_HELP_STRING([--with-anthy-zipcode=FILE], [file path of Anty zipcode.t])], [ANTHY_ZIPCODE_FILE="$withval"], [ANTHY_ZIPCODE_FILE="$datadir/$ANTHY_PC/zipcode.t"]) test "x$prefix" = xNONE && prefix=$ac_default_prefix eval ANTHY_ZIPCODE_FILE=$ANTHY_ZIPCODE_FILE eval ANTHY_ZIPCODE_FILE=$ANTHY_ZIPCODE_FILE AC_SUBST(ANTHY_ZIPCODE_FILE) AM_CONDITIONAL([ENABLE_ZIPCODE], [test -f "$ANTHY_ZIPCODE_FILE" ]) dnl - check file path of kasumi bin AC_ARG_WITH(kasumi-exec, [AC_HELP_STRING([--with-kasumi-exec=FILE], [file path of kasumi bin])], [KASUMI_EXEC_FILE="$withval"], [KASUMI_EXEC_FILE="$bindir/kasumi"]) AC_SUBST(KASUMI_EXEC_FILE) dnl - check file path of kasumi icon AC_ARG_WITH(kasumi-icon, [AC_HELP_STRING([--with-kasumi-icon=FILE], [file path of kasumi icon])], [KASUMI_ICON_FILE="$withval"], [KASUMI_ICON_FILE="$datadir/pixmaps/kasumi.png"]) AC_SUBST(KASUMI_ICON_FILE) dnl - check preference icon name # Replaced the legacy icon gtk-preferences with preferences-desktop # because the icon is included in gnome-icon-theme-legacy package. # The following fix would be needed for old non-GNOME desktops. # https://github.com/ibus/ibus/commit/dd6acfa5013b # Otherwise you can specify the preference icon for your desktop. AC_ARG_WITH(icon-preference, [AC_HELP_STRING([--with-icon-preference=ICON_NAME], [preference icon name.])], [ICON_PREFERENCE="$withval"], [ICON_PREFERENCE='preferences-desktop']) AC_SUBST(ICON_PREFERENCE) dnl - check private png AC_MSG_CHECKING([if you install the private png file]) AC_ARG_ENABLE(private-png, AS_HELP_STRING([--enable-private-png=no/yes], [Install ibus-anthy.png default=no]), [], enable_private_png=no) AC_MSG_RESULT($enable_private_png) if test x"$enable_private_png" = xyes; then AM_CONDITIONAL(HAVE_PRIVATE_PNG, true) else AM_CONDITIONAL(HAVE_PRIVATE_PNG, false) fi dnl - check on-off keys AC_ARG_WITH(on-off-keys, [AC_HELP_STRING([--with-on-off-keys="'KEY1','KEY2',..."], [Anthy default on-off keys. default=" 'Zenkaku_Hankaku', 'Ctrl+J'".])], [ON_OFF_KEYS="$withval"], [ON_OFF_KEYS="'Zenkaku_Hankaku', 'Ctrl+J'"]) AC_SUBST(ON_OFF_KEYS) dnl - check hotkeys for ibus-anthy which is used for ibus bridge mode. dnl - Normally you don't need this so could be HOTKEYS="no" AC_ARG_WITH(hotkeys, [AC_HELP_STRING([--with-hotkeys=HOTKEYS], [Use hotkeys for ibus bridge mode. (available value: yes/no/keys)])], [HOTKEYS="$withval"], [HOTKEYS="no"]) if test x"$HOTKEYS" = x"no"; then HOTKEYS_XML="" elif test x"$HOTKEYS" = x"yes"; then HOTKEYS_XML="Control+space,Zenkaku_Hankaku" elif test x"$HOTKEYS" = x; then HOTKEYS_XML="Control+space,Zenkaku_Hankaku" elif test x"$HOTKEYS" = xnull; then HOTKEYS_XML="" else HOTKEYS_XML="${HOTKEYS}" fi AC_SUBST(HOTKEYS_XML) dnl - check symbol in IBus.EngineDesc AC_MSG_CHECKING([if IBus.EngineDesc has get_symbol]) SYMBOL_CHAR='あ' SYMBOL_CHAR_INT=0x3042 SYMBOL_TEST="from gi.repository import IBus exit(not hasattr(IBus.EngineDesc, 'get_symbol')) " $PYTHON -c "$SYMBOL_TEST" if test $? -eq 0; then SYMBOL_XML="${SYMBOL_CHAR}" AC_MSG_RESULT([yes]) else SYMBOL_XML="" AC_MSG_ERROR([ibus 1.4 or later supports symbol in IBus.EngineDesc]) fi AC_SUBST(SYMBOL_CHAR_INT) AC_SUBST(SYMBOL_XML) dnl - check symbol in IBus.Property AC_MSG_CHECKING([if IBus.Property has get_symbol]) SYMBOL_TEST="from gi.repository import IBus exit(not hasattr(IBus.Property, 'get_symbol')) " $PYTHON -c "$SYMBOL_TEST" if test $? -eq 0; then AC_MSG_RESULT([yes]) else AC_MSG_ERROR([ibus 1.5 or later supports symbol in IBus.Property]) fi dnl - check XKB option in IBus.EngineDesc AC_MSG_CHECKING([if IBus.EngineDesc has get_layout_option]) LAYOUT_OPTION_TEST="from gi.repository import IBus exit(not hasattr(IBus.EngineDesc, 'get_layout_option')) " $PYTHON -c "$LAYOUT_OPTION_TEST" if test $? -eq 0; then AC_MSG_RESULT([yes]) else AC_MSG_ERROR([ibus 1.5 or later supports layout_option in IBus.EngineDesc]) fi AC_MSG_CHECKING([if IBus.EngineDesc has get_version]) DESC_VERSION_TEST="from gi.repository import IBus exit(not hasattr(IBus.EngineDesc, 'get_version')) " $PYTHON -c "$DESC_VERSION_TEST" if test $? -eq 0; then AC_MSG_RESULT([yes]) else AC_MSG_ERROR([ibus 1.5 or later supports version in IBus.EngineDesc]) fi dnl - check icon_prop_key in IBus.EngineDesc AC_MSG_CHECKING([if IBus.EngineDesc has get_icon_prop_key]) ICON_PROP_KEY_TEST="from gi.repository import IBus exit(not hasattr(IBus.EngineDesc, 'get_icon_prop_key')) " $PYTHON -c "$ICON_PROP_KEY_TEST" if test $? -eq 0; then ICON_PROP_KEY_XML="InputMode" AC_MSG_RESULT([yes]) else ICON_PROP_KEY_XML="" AC_MSG_RESULT([ibus 1.5.11 or later supports icon-prop-key in IBus.EngineDesc]) fi AC_SUBST(ICON_PROP_KEY_XML) dnl - set ibus-anthy layout AC_ARG_WITH(layout, [AC_HELP_STRING([--with-layout=LAYOUT], [Define the layout. the default is 'jp'. Probably you could set 'default'.])], [LAYOUT="$withval"], [LAYOUT="jp"]) if test x"$LAYOUT" = x; then LAYOUT="jp" fi LAYOUT_XML="${LAYOUT}" AC_SUBST(LAYOUT) AC_SUBST(LAYOUT_XML) dnl --enable-installed-tests AC_ARG_ENABLE(installed-tests, AS_HELP_STRING([--enable-installed-tests], [Enable to installed tests]), [enable_installed_tests=$enableval], [enable_installed_tests=no] ) AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], [test x"$enable_installed_tests" = x"yes"]) if test x"$enable_installed_tests" = x"no"; then enable_installed_tests="no (disabled, use --enable-installed-tests to enable)" fi dnl libtool versioning dnl dnl If LT_VERSION_INFO="lt_current:lt_revision:lt_age", libibus is dnl libibus-ibus_api_version.so.(lt_current - lt_age).lt_age.lt_revision dnl If the abi is changed, but it is compatible with last version, dnl ibus_abi_current++, ibus_abi_age++; dnl If the abi is not compatible with last version, dnl 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" AC_SUBST(LT_VERSION_INFO) dnl - define GETTEXT_* variables GETTEXT_PACKAGE=ibus-anthy AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED( GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the read-only architecture-independent data directory.] ) AM_GNU_GETTEXT_VERSION([0.19.8]) AM_GNU_GETTEXT([external]) dnl - OUTPUT files AC_CONFIG_FILES([ po/Makefile.in Makefile ibus-anthy.spec data/Makefile gir/Makefile engine/Makefile engine/python2/Makefile engine/python2/anthy.inputMethod.xml.in engine/python2/default.inputMethod.xml.in engine/python3/Makefile engine/python3/anthy.inputMethod.xml.in engine/python3/default.inputMethod.xml.in setup/Makefile setup/python2/Makefile setup/python3/Makefile tests/Makefile icons/Makefile m4/Makefile ]) AC_OUTPUT echo " IBus-Anthy version ibus_anthy_version GOBJECT2_CFLAGS $GOBJECT2_CFLAGS GOBJECT2_LIBS $GOBJECT2_LIBS ANTHY_PC $ANTHY_PC ANTHY_CFLAGS $ANTHY_CFLAGS ANTHY_LIBS $ANTHY_LIBS ANTHY_GOBJECT_LIBDIR $ANTHY_GOBJECT_LIBDIR ANTHY_GOBJECT_GIRDIR $ANTHY_GOBJECT_GIRDIR ANTHY_GOBJECT_TYPELIBSDIR $ANTHY_GOBJECT_TYPELIBSDIR LT_VERSION_INFO $LT_VERSION_INFO ENV_IBUS_ENGINE $ENV_IBUS_ENGINE HAVE_PYGTK2_ANTHY $enable_pygtk2_anthy python $PYTHON Enable python2 $enable_python2 Enable python3 $enable_python3 python-config $PYTHON_CONFIG PYTHON_CFLAGS $PYTHON_CFLAGS PYTHON_LIBS $PYTHON_LIBS ANTHY_ZIPCODE_FILE $ANTHY_ZIPCODE_FILE KASUMI_EXEC_FILE $KASUMI_EXEC_FILE KASUMI_ICON_FILE $KASUMI_ICON_FILE ICON_PREFERENCE $ICON_PREFERENCE ON_OFF_KEYS $ON_OFF_KEYS HOTKEYS_XML $HOTKEYS_XML SYMBOL_XML $SYMBOL_XML ICON_PROP_KEY_XML $ICON_PROP_KEY_XML LAYOUT_XML $LAYOUT_XML " ibus-anthy-1.5.17/data/000077500000000000000000000000001475510605700146135ustar00rootroot00000000000000ibus-anthy-1.5.17/data/Makefile.am000066400000000000000000000072341475510605700166550ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2010-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. dicts_DATA = \ emoji.t \ era.t \ oldchar.t \ symbol.t \ $(NULL) dictsdir = $(pkgdatadir)/dicts # rf. i18n metainfo.xml # http://www.freedesktop.org/software/appstream/docs/sect-Quickstart-Translation.html # https://blogs.gnome.org/hughsie/2016/01/25/appdata-and-the-gettext-domain/ metainfo_in_files = ibus-anthy.appdata.xml.in metainfo_DATA = org.freedesktop.ibus.engine.anthy.metainfo.xml metainfodir=$(datadir)/metainfo schemas_in_files = org.freedesktop.ibus.engine.anthy.gschema.xml.in schemas_DATA = $(schemas_in_files:.xml.in=.xml) schemasdir = $(datadir)/glib-2.0/schemas CLEANFILES = \ $(metainfo_DATA) \ $(schemas_DATA) \ emoji.t \ $(NULL) $(metainfo_DATA): $(metainfo_in_files) Makefile $(AM_V_GEN)$(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ $(schemas_DATA): $(schemas_in_files) KASUMI_EXEC_BASENAME=`basename $(KASUMI_EXEC_FILE)`; \ $(SED) -e "s|\@ANTHY_ZIPCODE_FILE\@|$(ANTHY_ZIPCODE_FILE)|g" \ -e "s|\@KASUMI_EXEC_FILE\@|$(KASUMI_EXEC_FILE)|g" \ -e "s|\@KASUMI_EXEC_BASENAME\@|$$KASUMI_EXEC_BASENAME|g" \ -e "s|\@KASUMI_ICON_FILE\@|$(KASUMI_ICON_FILE)|g" \ -e "s|\@ON_OFF_KEYS\@|$(ON_OFF_KEYS)|g" \ -e "s|\@pkgdatadir\@|$(pkgdatadir)|g" \ $< > $@ emoji.t: emoji-each.t emoji-emoji.t @echo "Generate $@"; \ $(SED) -e '/^#/d' $(srcdir)/emoji-emoji.t > emoji-emoji.t.$$$$; \ $(SED) -e "/^#@EMOJI_EMOJI@/r emoji-emoji.t.$$$$" \ $(srcdir)/emoji-each.t > emoji-each.t.$$$$; \ $(SED) -e '/^#@EMOJI_EMOJI@/d' emoji-each.t.$$$$ > emoji.t; \ rm emoji-emoji.t.$$$$ emoji-each.t.$$$$; \ $(NULL) if ENABLE_ZIPCODE dicts_DATA += zipcode.t zipcode.t: $(ANTHY_ZIPCODE_FILE) @echo "Generate $@"; \ $(PYTHON) zipcode-textdic.py $<; \ $(NULL) CLEANFILES += zipcode.t endif check: S_YEAR=`date '+%Y'`; \ M_YEAR=`echo $$S_YEAR | sed 'y/0123456789/0123456789/'`; \ grep -q $$M_YEAR $(srcdir)/era.t; \ if test $$? -ne 0 ; then \ echo "This year $$M_YEAR is not included in era.y"; \ exit 1; \ fi; install-data-hook: if test -z "$(DESTDIR)"; then \ glib-compile-schemas $(schemasdir); \ fi uninstall-hook: SCHEMAS_FILES=`ls $(schemasdir)/*.gschema.xml` || true; \ if test -z "$$SCHEMAS_FILES" && \ test -f $(schemasdir)/gschemas.compiled; then \ rm $(schemasdir)/gschemas.compiled; \ fi EXTRA_DIST = \ $(metainfo_in_files) \ $(schemas_in_files) \ emoji-each.t \ emoji-emoji.t \ era.t \ oldchar.t \ symbol.t \ zipcode-textdic.py \ $(NULL) ibus-anthy-1.5.17/data/emoji-each.t000066400000000000000000001654531475510605700170170ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2015-2020 Takao Fujiwara # Copyright (c) 2015-2020 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. # # # Fedora font package is google-noto-emoji-fonts # Ubuntu font package is fonts-noto-color-emoji # # This file was imported from im-dict-ja # im-dict-ja - Japanese word dictionary set for input method # http://github.com/fujiwarat/im-dict-ja 。。。 #T35*500 😒 「」 #T35*500 😒 あいすくりーむ #T35*500 🍨 あかうんと #T35*500 👤 あかうんと #T35*500 👥 あかくなる #T35*500 😳 あかちゃん #T35*500 👶 あかちゃん #T35*500 👼 あかちゃん #T35*500 🤱 あかり #T35*500 🪔 あかんぼう #T35*500 👶 あかんぼう #T35*500 👼 あかんぼう #T35*500 🤱 あくしゅ #T35*500 🤝 あくしゅ #T35*500 👭 あくしゅ #T35*500 👫 あくしゅ #T35*500 👬 あし #T35*500 🦵 あし #T35*500 🦶 あしあと #T35*500 👣 あせ #T35*500 💦 あせ #T35*500 😓 あせ #T35*500 😰 あっかんべー #T35*500 😛 あっかんべー #T35*500 😜 あっかんべー #T35*500 😝 あつい #T35*500 🥵 あな #T35*500 🕳 あひる #T35*500 🦆 あぼかど #T35*500 🥑 あめ #T35*500 ☂ あめ #T35*500 ☔ あめ #T35*500 ⛆ あめ #T35*500 ⛈ あめ #T35*500 🌧 あめ #T35*500 🍬 あめ #T35*500 🍭 あめふと #T35*500 🏈 あめーば #T35*500 🦠 あやしい #T35*500 🤨 あやまる #T35*500 🙏 あらいぐま #T35*500 🦝 あり #T35*500 🐜 ありくい #T35*500 🦡 あるてぃめっと #T35*500 🥏 あるぱか #T35*500 🦙 あんぜんぴん #T35*500 🧷 あんてな #T35*500 📡 あんない #T35*500 💁 いいえ #T35*500 🙅 いえ #T35*500 🏠 いえ #T35*500 🏡 いか #T35*500 🦑 いかり #T35*500 ⚓ いかり #T35*500 💢 いかり #T35*500 😠 いかり #T35*500 😡 いかり #T35*500 😣 いかり #T35*500 😤 いかり #T35*500 😾 いけい #T35*500 🏻 いけい #T35*500 🏼 いけい #T35*500 🏽 いけい #T35*500 🏾 いけい #T35*500 🏿 いけい #T35*500 🦰 いけい #T35*500 🦱 いけい #T35*500 🦲 いけい #T35*500 🦳 いけい #T35*500 ‍ いけい #T35*500 ♂ いけい #T35*500 ♀ いけい #T35*500 ︎ いけい #T35*500 ️ いしやきいも #T35*500 🍠 いす #T35*500 🦼 いす #T35*500 🦽 いす #T35*500 🪑 いせえび #T35*500 🦞 いせき #T35*500 ⛬ いちい #T35*500 🥇 いちご #T35*500 🍓 いちねんせい #T35*500 🎒 いちねんせい #T35*500 🎓 いてざ #T35*500 ♐ いでんし #T35*500 🧬 いと #T35*500 🧵 いと #T35*500 🧶 いな #T35*500 🌾 いぬ #T35*500 🐕 いぬ #T35*500 🐩 いぬ #T35*500 🐶 いぬ #T35*500 🦮 いぬ #T35*500 🦺 いね #T35*500 🌾 いのしし #T35*500 🐗 いのり #T35*500 🤞 いや #T35*500 ☹ いや #T35*500 😧 いや #T35*500 🙅 いるか #T35*500 🐬 いろ #T35*500 🏻 いろ #T35*500 🏼 いろ #T35*500 🏽 いろ #T35*500 🏾 いろ #T35*500 🏿 いろ #T35*500 🦰 いろ #T35*500 ️ いわざる #T35*500 🙊 ういすきー #T35*500 🥃 うえでぃんぐ #T35*500 👰 うおざ #T35*500 ♓ うけつけ #T35*500 💁 うさぎ #T35*500 🐇 うさぎ #T35*500 🐰 うし #T35*500 🐂 うし #T35*500 🐃 うし #T35*500 🐄 うし #T35*500 🐮 うたがう #T35*500 🤨 うちゅうじん #T35*500 👽 うま #T35*500 🐎 うま #T35*500 🐴 うま #T35*500 🦓 うんこ #T35*500 💩 えいが #T35*500 🎞 えいが #T35*500 🎥 えいが #T35*500 🎦 えいが #T35*500 🎬 えいせい #T35*500 📡 えいゆう #T35*500 🦸 えいゆう #T35*500 🦹 えがお #T35*500 ☺ えがお #T35*500 ☻ えがお #T35*500 😀 えがお #T35*500 😁 えがお #T35*500 😂 えがお #T35*500 😃 えがお #T35*500 😄 えがお #T35*500 😅 えがお #T35*500 😆 えがお #T35*500 😇 えがお #T35*500 😈 えがお #T35*500 😉 えがお #T35*500 😊 えがお #T35*500 😋 えがお #T35*500 😌 えがお #T35*500 😍 えがお #T35*500 😎 えがお #T35*500 😸 えがお #T35*500 😹 えがお #T35*500 😺 えがお #T35*500 😻 えがお #T35*500 🙂 えがお #T35*500 🙋 えがお #T35*500 ʬ えがお #T35*500 🤣 えがお #T35*500 🤩 えがお #T35*500 🤪 えがお #T35*500 🤭 えがお #T35*500 🥰 えがお #T35*500 🥳 えび #T35*500 🦐 えび #T35*500 🦞 えびふらい #T35*500 🍤 えむでぃー #T35*500 💽 #@EMOJI_EMOJI@ えん #T35*500 🟠 えん #T35*500 🟡 えん #T35*500 🟢 えん #T35*500 🟣 えん #T35*500 🟤 えんそく #T35*500 🧺 えんばんなげ #T35*500 🥏 えんぴつ #T35*500 ✎ えんぴつ #T35*500 ✏ えんぴつ #T35*500 ✐ おいわい #T35*500 🎍 おいわい #T35*500 🎎 おいわい #T35*500 🎏 おいわい #T35*500 🎕 おいわい #T35*500 💐 おいわい #T35*500 🥂 おうかん #T35*500 ♔ おうかん #T35*500 ♕ おうかん #T35*500 ♚ おうかん #T35*500 ♛ おうかん #T35*500 👑 おうしざ #T35*500 ♉ おうじ #T35*500 🤴 おうじょ #T35*500 👸 おうむ #T35*500 🦜 おえ #T35*500 🤢 おえ #T35*500 🤮 おおかみ #T35*500 🐺 おおごえ #T35*500 ⚞ おおごえ #T35*500 ⚟ おかし #T35*500 🥞 おかし #T35*500 🍡 おかし #T35*500 🍦 おかし #T35*500 🍧 おかし #T35*500 🍨 おかし #T35*500 🍩 おかし #T35*500 🍪 おかし #T35*500 🍬 おかし #T35*500 🍭 おかし #T35*500 🍮 おかし #T35*500 🍯 おかし #T35*500 🍰 おかし #T35*500 🥮 おかし #T35*500 🥯 おかし #T35*500 🧁 おかゆ #T35*500 🥣 おこる #T35*500 💢 おこる #T35*500 😠 おこる #T35*500 😡 おこる #T35*500 😣 おこる #T35*500 😤 おこる #T35*500 😾 おじいさん #T35*500 👴 おじいちゃん #T35*500 👴 おじぎ #T35*500 🙇 おたく #T35*500 🤓 おちば #T35*500 🍂 おちゃ #T35*500 🧉 おっけい #T35*500 🙆 おっけい #T35*500 👌 おっけー #T35*500 🙆 おっけー #T35*500 👌 おてだま #T35*500 🤹 おでん #T35*500 🍢 おとこ #T35*500 ♂ おとこ #T35*500 👦 おとこ #T35*500 👬 おとこ #T35*500 👨 おとこ #T35*500 🚹 おとこ #T35*500 🤵 おとこ #T35*500 👴 おとな #T35*500 👨 おとな #T35*500 👩 おとな #T35*500 🧑 おとな #T35*500 🧓 おとめざ #T35*500 ♍ おに #T35*500 👹 おにぎり #T35*500 🍙 おねがい #T35*500 🥺 おの #T35*500 🪓 おばあさん #T35*500 👵 おばあちゃん #T35*500 👵 おばけ #T35*500 👻 おばけ #T35*500 🧞 おばけ #T35*500 🧟 おひつじざ #T35*500 ♉ おふぃす #T35*500 🏢 おまもり #T35*500 🧿 おもちゃ #T35*500 🧸 おもちゃ #T35*500 🪀 おもちゃ #T35*500 🪁 おやゆび #T35*500 👍 おやゆび #T35*500 👎 おらうーたん #T35*500 🦧 おれんじ #T35*500 🍊 おんがく #T35*500 🎘 おんがく #T35*500 🎹 おんがく #T35*500 🎺 おんがく #T35*500 🎸 おんがく #T35*500 🎷 おんがく #T35*500 🥁 おんな #T35*500 ♀ おんな #T35*500 👧 おんな #T35*500 👭 おんな #T35*500 👩 おんな #T35*500 🚺 おんな #T35*500 👰 おんな #T35*500 🤰 おんな #T35*500 👵 おんぷ #T35*500 🎵 おんぷ #T35*500 🎶 おーけー #T35*500 🙆 おーけー #T35*500 👌 か #T35*500 🦟 かい #T35*500 🐚 かい #T35*500 🦪 かいおうせい #T35*500 ♆ かいもの #T35*500 🛒 かいわ #T35*500 ⚞ かいわ #T35*500 ⚟ かいわ #T35*500 💬 かうぼーい #T35*500 🤠 かえで #T35*500 🍁 かえる #T35*500 🐻 かお #T35*500 👀 かお #T35*500 👁 かお #T35*500 👂 かお #T35*500 👃 かお #T35*500 👄 かお #T35*500 👅 かお #T35*500 ☹ かお #T35*500 ☺ かお #T35*500 ☻ かお #T35*500 😀 かお #T35*500 😁 かお #T35*500 😂 かお #T35*500 😃 かお #T35*500 😄 かお #T35*500 😅 かお #T35*500 😆 かお #T35*500 😇 かお #T35*500 👿 かお #T35*500 😈 かお #T35*500 😉 かお #T35*500 😊 かお #T35*500 😋 かお #T35*500 😌 かお #T35*500 😍 かお #T35*500 😎 かお #T35*500 😏 かお #T35*500 😐 かお #T35*500 😑 かお #T35*500 😒 かお #T35*500 😓 かお #T35*500 😔 かお #T35*500 😕 かお #T35*500 😖 かお #T35*500 😗 かお #T35*500 😘 かお #T35*500 😙 かお #T35*500 😚 かお #T35*500 😛 かお #T35*500 😜 かお #T35*500 😝 かお #T35*500 😞 かお #T35*500 😟 かお #T35*500 😠 かお #T35*500 😡 かお #T35*500 😢 かお #T35*500 😣 かお #T35*500 😤 かお #T35*500 😥 かお #T35*500 😦 かお #T35*500 😧 かお #T35*500 😨 かお #T35*500 😩 かお #T35*500 😪 かお #T35*500 😫 かお #T35*500 😬 かお #T35*500 😭 かお #T35*500 😮 かお #T35*500 😯 かお #T35*500 😰 かお #T35*500 😱 かお #T35*500 😲 かお #T35*500 😳 かお #T35*500 😴 かお #T35*500 😵 かお #T35*500 😶 かお #T35*500 😷 かお #T35*500 😸 かお #T35*500 😹 かお #T35*500 😺 かお #T35*500 😻 かお #T35*500 😼 かお #T35*500 😽 かお #T35*500 😾 かお #T35*500 😿 かお #T35*500 🙀 かお #T35*500 🙁 かお #T35*500 🙂 かお #T35*500 🙅 かお #T35*500 🙆 かお #T35*500 🙇 かお #T35*500 🙈 かお #T35*500 🙉 かお #T35*500 🙊 かお #T35*500 🙋 かお #T35*500 🙌 かお #T35*500 🙍 かお #T35*500 🙎 かお #T35*500 🙏 かお #T35*500 ʬ かお #T35*500 👦 かお #T35*500 👨 かお #T35*500 👴 かお #T35*500 👧 かお #T35*500 👩 かお #T35*500 🧒 かお #T35*500 🧑 かお #T35*500 🧓 かお #T35*500 👵 かお #T35*500 🧕 かお #T35*500 🧔 かお #T35*500 🤐 かお #T35*500 🤒 かお #T35*500 🤓 かお #T35*500 🤔 かお #T35*500 🤕 かお #T35*500 🤖 かお #T35*500 🤠 かお #T35*500 🤡 かお #T35*500 🤢 かお #T35*500 🤮 かお #T35*500 🤣 かお #T35*500 🤩 かお #T35*500 🤪 かお #T35*500 🤭 かお #T35*500 🤤 かお #T35*500 🤥 かお #T35*500 🤦 かお #T35*500 🤧 かお #T35*500 🤨 かお #T35*500 🤯 かお #T35*500 🤬 かお #T35*500 🤫 かお #T35*500 🧐 かお #T35*500 🥰 かお #T35*500 🥳 かお #T35*500 🥴 かお #T35*500 🥵 かお #T35*500 🥶 かお #T35*500 🥺 かお #T35*500 🥱 かお #T35*500 🤴 かお #T35*500 👸 かお #T35*500 🤶 かお #T35*500 🤷 かおもじ #T35*500 👀 かおもじ #T35*500 👁 かおもじ #T35*500 👂 かおもじ #T35*500 👃 かおもじ #T35*500 👄 かおもじ #T35*500 👅 かおもじ #T35*500 ☹ かおもじ #T35*500 ☺ かおもじ #T35*500 ☻ かおもじ #T35*500 😀 かおもじ #T35*500 😁 かおもじ #T35*500 😂 かおもじ #T35*500 😃 かおもじ #T35*500 😄 かおもじ #T35*500 😅 かおもじ #T35*500 😆 かおもじ #T35*500 😇 かおもじ #T35*500 👿 かおもじ #T35*500 😈 かおもじ #T35*500 😉 かおもじ #T35*500 😊 かおもじ #T35*500 😋 かおもじ #T35*500 😌 かおもじ #T35*500 😍 かおもじ #T35*500 😎 かおもじ #T35*500 😏 かおもじ #T35*500 😐 かおもじ #T35*500 😑 かおもじ #T35*500 😒 かおもじ #T35*500 😓 かおもじ #T35*500 😔 かおもじ #T35*500 😕 かおもじ #T35*500 😖 かおもじ #T35*500 😗 かおもじ #T35*500 😘 かおもじ #T35*500 😙 かおもじ #T35*500 😚 かおもじ #T35*500 😛 かおもじ #T35*500 😜 かおもじ #T35*500 😝 かおもじ #T35*500 😞 かおもじ #T35*500 😟 かおもじ #T35*500 😠 かおもじ #T35*500 😡 かおもじ #T35*500 😢 かおもじ #T35*500 😣 かおもじ #T35*500 😤 かおもじ #T35*500 😥 かおもじ #T35*500 😦 かおもじ #T35*500 😧 かおもじ #T35*500 😨 かおもじ #T35*500 😩 かおもじ #T35*500 😪 かおもじ #T35*500 😫 かおもじ #T35*500 😬 かおもじ #T35*500 😭 かおもじ #T35*500 😮 かおもじ #T35*500 😯 かおもじ #T35*500 😰 かおもじ #T35*500 😱 かおもじ #T35*500 😲 かおもじ #T35*500 😳 かおもじ #T35*500 😴 かおもじ #T35*500 😵 かおもじ #T35*500 😶 かおもじ #T35*500 😷 かおもじ #T35*500 😸 かおもじ #T35*500 😹 かおもじ #T35*500 😺 かおもじ #T35*500 😻 かおもじ #T35*500 😼 かおもじ #T35*500 😽 かおもじ #T35*500 😾 かおもじ #T35*500 😿 かおもじ #T35*500 🙀 かおもじ #T35*500 🙁 かおもじ #T35*500 🙂 かおもじ #T35*500 🙅 かおもじ #T35*500 🙆 かおもじ #T35*500 🙇 かおもじ #T35*500 🙈 かおもじ #T35*500 🙉 かおもじ #T35*500 🙊 かおもじ #T35*500 🙋 かおもじ #T35*500 🙌 かおもじ #T35*500 🙍 かおもじ #T35*500 🙎 かおもじ #T35*500 🙏 かおもじ #T35*500 ʬ かおもじ #T35*500 👦 かおもじ #T35*500 👨 かおもじ #T35*500 👴 かおもじ #T35*500 👧 かおもじ #T35*500 👩 かおもじ #T35*500 🧒 かおもじ #T35*500 🧑 かおもじ #T35*500 🧓 かおもじ #T35*500 👵 かおもじ #T35*500 🧕 かおもじ #T35*500 🧔 かおもじ #T35*500 🤐 かおもじ #T35*500 🤒 かおもじ #T35*500 🤓 かおもじ #T35*500 🤔 かおもじ #T35*500 🤕 かおもじ #T35*500 🤖 かおもじ #T35*500 🤠 かおもじ #T35*500 🤡 かおもじ #T35*500 🤢 かおもじ #T35*500 🤮 かおもじ #T35*500 🤣 かおもじ #T35*500 🤩 かおもじ #T35*500 🤪 かおもじ #T35*500 🤭 かおもじ #T35*500 🤤 かおもじ #T35*500 🤥 かおもじ #T35*500 🤦 かおもじ #T35*500 🤧 かおもじ #T35*500 🤨 かおもじ #T35*500 🤯 かおもじ #T35*500 🤬 かおもじ #T35*500 🤫 かおもじ #T35*500 🧐 かおもじ #T35*500 🥰 かおもじ #T35*500 🥳 かおもじ #T35*500 🥴 かおもじ #T35*500 🥵 かおもじ #T35*500 🥶 かおもじ #T35*500 🥺 かおもじ #T35*500 🥱 かおもじ #T35*500 🤴 かおもじ #T35*500 👸 かおもじ #T35*500 🤶 かおもじ #T35*500 🤷 かがく #T35*500 🧪 かがく #T35*500 🧫 かがく #T35*500 🧬 かき #T35*500 🦪 かきごおり #T35*500 🍧 かく #T35*500 ✍ かくてる #T35*500 🍸 かさ #T35*500 ☂ かさ #T35*500 ☔ かさ #T35*500 🌂 かじ #T35*500 🧯 かせい #T35*500 ♂ かぜ #T35*500 😷 かぜ #T35*500 🤒 かぞく #T35*500 👪 かた #T35*500 🤷 かたつむり #T35*500 🐌 かたな #T35*500 ⚔ かっと #T35*500 💇 かっと #T35*500 💈 かっぷけーき #T35*500 🧁 かどまつ #T35*500 🎍 かなづち #T35*500 ⚒ かなづち #T35*500 ⛏ かなづち #T35*500 🔨 かにざ #T35*500 ♋ かぬー #T35*500 🛶 かば #T35*500 🦛 かみ #T35*500 🦱 かみ #T35*500 🦲 かみ #T35*500 🦳 かみそり #T35*500 🪒 かみなり #T35*500 ⚡ かめ #T35*500 🐢 かめら #T35*500 📷 からい #T35*500 🌶 からおけ #T35*500 🎙 からおけ #T35*500 🎤 からて #T35*500 🥋 からー #T35*500 🏻 からー #T35*500 🏼 からー #T35*500 🏽 からー #T35*500 🏾 からー #T35*500 🏿 からー #T35*500 🦰 からー #T35*500 ️ かれる #T35*500 🥀 かれー #T35*500 🍛 かわうそ #T35*500 🦦 かん #T35*500 🥫 かんがえちゅう #T35*500 😔 かんがえちゅう #T35*500 💭 かんがえちゅう #T35*500 🤔 かんがえちゅう #T35*500 .。oO かんがるー #T35*500 🦒 かんがるー #T35*500 🦘 かんづめ #T35*500 🥫 かんぱい #T35*500 🥂 かんらんしゃ #T35*500 🎡 かーと #T35*500 🛒 かーりんぐ #T35*500 🥌 がいこつ #T35*500 💀 がいこつ #T35*500 ☠ がくせい #T35*500 🎒 がくせい #T35*500 🎓 がくふ #T35*500 🎼 がけ #T35*500 🧗 がっかり #T35*500 😥 がっかり #T35*500 😦 がっかり #T35*500 😧 がっかり #T35*500 😨 がっかり #T35*500 😩 がっかり #T35*500 😬 がっかり #T35*500 🙀 がっかり #T35*500 🙁 がっかり #T35*500 🙍 がっかり #T35*500 🙎 がっき #T35*500 🎘 がっき #T35*500 🎹 がっき #T35*500 🎺 がっき #T35*500 🎸 がっき #T35*500 🎷 がっき #T35*500 🪕 がっこう #T35*500 🏫 がっこう #T35*500 🎒 がっこう #T35*500 🎓 がんたん #T35*500 🎍 がーどまん #T35*500 💂 き #T35*500 🌲 き #T35*500 🌳 き #T35*500 🌴 きかざる #T35*500 🙉 きす #T35*500 💋 きす #T35*500 💏 きす #T35*500 😗 きす #T35*500 😘 きす #T35*500 😙 きす #T35*500 😚 きす #T35*500 😽 きすまーく #T35*500 💋 きっしゅ #T35*500 🥧 きつね #T35*500 🦊 きもの #T35*500 👘 きゃべつ #T35*500 🥬 きゃりーばっぐ #T35*500 🧳 きゅうかんちょう #T35*500 🦜 きゅうけつき #T35*500 🦇 きゅうけつき #T35*500 🧛 きゅうどう #T35*500 ◎ きゅうどう #T35*500 🎯 きゅうり #T35*500 🥒 きょうかい #T35*500 ⛪ きょうふ #T35*500 😱 きょうりゅう #T35*500 🦕 きょうりゅう #T35*500 🦖 きょしゅ #T35*500 🙋 きょしゅ #T35*500 🤚 きら #T35*500 ⭐ きら #T35*500 ⭑ きら #T35*500 ⭒ きら #T35*500 ✦ きら #T35*500 ✧ きら #T35*500 ✨ きら #T35*500 ✩ きら #T35*500 ✪ きら #T35*500 ✫ きら #T35*500 ✬ きら #T35*500 ✭ きら #T35*500 ✮ きら #T35*500 ✯ きら #T35*500 ✰ きり #T35*500 🌁 きり #T35*500 🌫 きりつ #T35*500 🧍 きん #T35*500 🥇 きんぎょ #T35*500 🐠 きんこ #T35*500 🧰 きんし #T35*500 ⛒ きんし #T35*500 ⛔ きんせい #T35*500 ♀ きんにく #T35*500 💪 きんぱつ #T35*500 👱 きー #T35*500 ⚿ きー #T35*500 🔑 きーうぃ #T35*500 🥝 きーぼーど #T35*500 ⌨ きーぼーど #T35*500 🖮 ぎたー #T35*500 🎸 ぎゃぐ #T35*500 🤪 ぎゅうにゅう #T35*500 🥛 ぎょうざ #T35*500 🥟 ぎん #T35*500 🥈 ぎんこう #T35*500 🏦 くしゃみ #T35*500 🤧 くじゃく #T35*500 🦚 くじら #T35*500 🐋 くじら #T35*500 🐳 くすだま #T35*500 🎊 くすり #T35*500 💊 くだもの #T35*500 🍇 くだもの #T35*500 🍈 くだもの #T35*500 🍉 くだもの #T35*500 🍊 くだもの #T35*500 🍋 くだもの #T35*500 🍌 くだもの #T35*500 🍍 くだもの #T35*500 🍎 くだもの #T35*500 🍏 くだもの #T35*500 🍐 くだもの #T35*500 🍑 くだもの #T35*500 🍒 くだもの #T35*500 🍓 くだもの #T35*500 🥝 くだもの #T35*500 🥥 くだもの #T35*500 🥭 くちびる #T35*500 🗢 くちべに #T35*500 💄 くっきー #T35*500 🍪 くっきー #T35*500 🥠 くっきー #T35*500 🥨 くっきー #T35*500 🥮 くつ #T35*500 👞 くつ #T35*500 👟 くつ #T35*500 👠 くつ #T35*500 👡 くつ #T35*500 👢 くつ #T35*500 🥾 くつ #T35*500 🥿 くつ #T35*500 🩰 くつ #T35*500 👣 くつした #T35*500 🧦 くま #T35*500 🐻 くま #T35*500 🧸 くも #T35*500 🕷 くも #T35*500 🕸 くもり #T35*500 ☁ くもり #T35*500 ⛅ くもり #T35*500 🌤 くらっかー #T35*500 🎉 くり #T35*500 🌰 くりすます #T35*500 🎄 くりすます #T35*500 🎅 くりすます #T35*500 🤶 くりっぷ #T35*500 📎 くるま #T35*500 🏎 くるま #T35*500 🛺 くるまいす #T35*500 🦼 くるまいす #T35*500 🦽 くろうす #T35*500 🤶 くろわっさん #T35*500 🥐 くろーばー #T35*500 ☘ くろーばー #T35*500 🍀 くろーばー #T35*500 ஐ くんしょう #T35*500 🎖 ぐらす #T35*500 🍷 ぐらす #T35*500 🍸 ぐらす #T35*500 🥂 ぐらす #T35*500 🥃 ぐろーぶ #T35*500 🥊 ぐー #T35*500 ✊ ぐー #T35*500 🤛 ぐー #T35*500 🤜 けいこく #T35*500 ⚠ けいさつ #T35*500 👮 けいさつけん #T35*500 🦺 けいさん #T35*500 🧮 けいたい #T35*500 📱 けいたい #T35*500 📲 けいと #T35*500 🧶 けいば #T35*500 🏇 けいびいん #T35*500 💂 けが #T35*500 🤕 けしょうひん #T35*500 🧴 けっこん #T35*500 ⚭ けっこん #T35*500 💒 けっこんしき #T35*500 💒 けばぶ #T35*500 🥙 けんきゅう #T35*500 🧪 けんきゅう #T35*500 🧫 けんきゅう #T35*500 🧬 けんさく #T35*500 🔍 けんさく #T35*500 🔎 けんじゅう #T35*500 🔫 けんちく #T35*500 👷 けんびきょう #T35*500 🔬 けーき #T35*500 🍮 けーき #T35*500 🍰 けーき #T35*500 🎂 けーき #T35*500 🥧 けーき #T35*500 🥮 けーき #T35*500 🧁 けーる #T35*500 🥬 げろ #T35*500 🤢 げろ #T35*500 🤮 げんつき #T35*500 🛵 げんまい #T35*500 🥣 げーむ #T35*500 🎮 げーむ #T35*500 ◎ げーむ #T35*500 🎯 げーむ #T35*500 🎰 げーむ #T35*500 🎱 げーむ #T35*500 🎲 げーむ #T35*500 🎳 げーむ #T35*500 🎴 げーむ #T35*500 🧿 げーむ #T35*500 🧩 げーむ #T35*500 🧸 げーむ #T35*500 ♟ こ #T35*500 👦 こ #T35*500 👧 こ #T35*500 🧒 こ #T35*500 🤱 こあら #T35*500 🐨 こいのぼり #T35*500 🎏 こうぐ #T35*500 🧰 こうしん #T35*500 🗘 こうじちゅう #T35*500 ⚒ こうじちゅう #T35*500 ⛏ こうじちゅう #T35*500 ⛑ こうじょう #T35*500 ⛭ こうじょう #T35*500 🏭 こうもり #T35*500 🦇 こおり #T35*500 🧊 こおろぎ #T35*500 🦗 ここなっつ #T35*500 🥥 こしょう #T35*500 🧂 こっき #T35*500 🎌 こっぷ #T35*500 ☕ こっぷ #T35*500 🍵 こっぷ #T35*500 🍶 こっぷ #T35*500 🍷 こっぷ #T35*500 🍸 こっぷ #T35*500 🍹 こっぷ #T35*500 🍺 こっぷ #T35*500 🍻 こっぷ #T35*500 🍻 こっぷ #T35*500 🍼 こっぷ #T35*500 🥂 こっぷ #T35*500 🥃 こっぷ #T35*500 🥛 こども #T35*500 👦 こども #T35*500 👧 こども #T35*500 🧒 こども #T35*500 🤱 こどものひ #T35*500 🎏 こびと #T35*500 🧝 ころっけ #T35*500 🧆 こんぱす #T35*500 🧭 こんぴゅーたー #T35*500 💻 こんぴゅーたー #T35*500 🖥 こんぴゅーたー #T35*500 💽 こんぴゅーたー #T35*500 💾 こんぴゅーたー #T35*500 💿 こんぴゅーたー #T35*500 📀 こんぴゅーたー #T35*500 🖱 こんぴゅーたー #T35*500 🖲 こんらん #T35*500 😖 こんわく #T35*500 😖 こーと #T35*500 🧥 こーと #T35*500 🥼 こーひー #T35*500 ☕ こーひー #T35*500 🍵 ごはん #T35*500 🍘 ごはん #T35*500 🍙 ごはん #T35*500 🍚 ごぼうせい #T35*500 ✡ ごぼうせい #T35*500 🔯 ごりら #T35*500 🦍 ごるふ #T35*500 ⛳ ごるふ #T35*500 🏌 ごーぐる #T35*500 🥽 ごーる #T35*500 🥅 さい #T35*500 🦏 さいきん #T35*500 🦠 さいん #T35*500 🤟 さいん #T35*500 🤲 さいころ #T35*500 ⚀ さいころ #T35*500 ⚁ さいころ #T35*500 ⚂ さいころ #T35*500 ⚃ さいころ #T35*500 ⚄ さいころ #T35*500 ⚅ さいころ #T35*500 🎲 さいしょうか #T35*500 🗕 さいだいか #T35*500 🗖 さいふ #T35*500 👛 さうな #T35*500 🧖 さかな #T35*500 🐟 さかな #T35*500 🐠 さかな #T35*500 🐡 さかな #T35*500 🦈 さくら #T35*500 🌸 さくらんぼ #T35*500 🍒 さけ #T35*500 🍶 さけ #T35*500 🥴 さけぶ #T35*500 😱 さそり #T35*500 🦂 さそりざ #T35*500 ♏ さっかー #T35*500 ⚽ さっくす #T35*500 🎷 さぼてん #T35*500 🌵 さむい #T35*500 🥶 さめ #T35*500 🦈 さようなら #T35*500 👋 さらだ #T35*500 🥗 さりー #T35*500 🥻 さる #T35*500 🐒 さる #T35*500 🐵 さんい #T35*500 🥉 さんた #T35*500 🎅 さんたくろーす #T35*500 🎅 さんどうぃっち #T35*500 🥪 さんぱつ #T35*500 💇 さんぱつ #T35*500 💈 さーかす #T35*500 🎪 さーふぃん #T35*500 🏄 ざぜん #T35*500 🧘 ざりがに #T35*500 🦞 しぇーく #T35*500 🥤 しお #T35*500 🧂 しおり #T35*500 📑 しか #T35*500 🦌 しかく #T35*500 🟥 しかく #T35*500 🟦 しかく #T35*500 🟧 しかく #T35*500 🟨 しかく #T35*500 🟩 しかく #T35*500 🟪 しかく #T35*500 🟫 しけん #T35*500 📝 しけんかん #T35*500 🧪 ししざ #T35*500 ♌ しずか #T35*500 🤫 しせい #T35*500 🧍 しせい #T35*500 🧎 した #T35*500 👅 した #T35*500 😛 した #T35*500 😜 した #T35*500 😝 したぎ #T35*500 👙 したぎ #T35*500 🩱 したぎ #T35*500 🩲 したぎ #T35*500 🩳 しまうま #T35*500 🦓 しゃつ #T35*500 👕 しゃんぱん #T35*500 🥂 しゃんぺいん #T35*500 🥂 しゅうしょくし #T35*500 🏻 しゅうしょくし #T35*500 🏼 しゅうしょくし #T35*500 🏽 しゅうしょくし #T35*500 🏾 しゅうしょくし #T35*500 🏿 しゅうしょくし #T35*500 🦰 しゅうしょくし #T35*500 🦱 しゅうしょくし #T35*500 🦲 しゅうしょくし #T35*500 🦳 しゅうしょくし #T35*500 ‍ しゅうしょくし #T35*500 ♂ しゅうしょくし #T35*500 ♀ しゅうしょくし #T35*500 ︎ しゅうしょくし #T35*500 ️ しょうおん #T35*500 🔇 しょうかき #T35*500 🧯 しょうがいしゃ #T35*500 🦻 しょうがいしゃ #T35*500 🦾 しょうがいしゃ #T35*500 🦿 しょうがいしゃ #T35*500 🧏 しょうがいしゃ #T35*500 🦼 しょうがいしゃ #T35*500 🦽 しょうがいしゃ #T35*500 🦯 しょうがくせい #T35*500 🎒 しょうがくせい #T35*500 🎓 しょうがつ #T35*500 🎍 しょうがっこう #T35*500 🎒 しょうがっこう #T35*500 🎓 しょうぎ #T35*500 ⛉ しょうぎ #T35*500 ⛊ しょくぎょう #T35*500 👮 しょくぎょう #T35*500 🕵 しょくぎょう #T35*500 💂 しょくぎょう #T35*500 👷 しょくじ #T35*500 🍴 しょくじ #T35*500 🥄 しょくじ #T35*500 🥢 しょくじ #T35*500 🍱 しょくじ #T35*500 🥡 しょくぱん #T35*500 🍞 しょくぶつ #T35*500 🌱 しょくぶつ #T35*500 🌲 しょくぶつ #T35*500 🌳 しょくぶつ #T35*500 🌴 しょくぶつ #T35*500 🌵 しょくぶつ #T35*500 🌾 しょくぶつ #T35*500 🌿 しょくぶつ #T35*500 ☘ しょくぶつ #T35*500 🍀 しょくぶつ #T35*500 ஐ しょくぶつ #T35*500 🍁 しょくぶつ #T35*500 🍂 しょくぶつ #T35*500 🍃 しょしんしゃ #T35*500 🔰 しょっと #T35*500 🥃 しらが #T35*500 🦳 しらける #T35*500 😒 しりある #T35*500 🥣 しるくはっと #T35*500 🎩 しろ #T35*500 ⛫ しんごう #T35*500 🛑 しんげつ #T35*500 ● しんげつ #T35*500 🌑 しんげつ #T35*500 🌚 しーでぃー #T35*500 💿 じい #T35*500 👴 じぇっとこーすたー #T35*500 🎢 じぐそーぱずる #T35*500 🧩 じしゃく #T35*500 🧲 じっけん #T35*500 🧪 じっけん #T35*500 🧫 じっけん #T35*500 🧬 じっぱー #T35*500 🤐 じてんしゃ #T35*500 🚴 じどり #T35*500 🤳 じゃがいも #T35*500 🥔 じゃぐりんぐ #T35*500 🤹 じゃんけん #T35*500 ✊ じゃんけん #T35*500 ✋ じゃんけん #T35*500 ✌ じゅうじか #T35*500 ☥ じゅうじか #T35*500 ☦ じゅうじか #T35*500 ☧ じゅうじか #T35*500 ☨ じゅうじか #T35*500 ☩ じゅうじか #T35*500 ✞ じゅうじか #T35*500 🕆 じゅうじか #T35*500 🕇 じゅうどう #T35*500 🥋 じゅうりょうあげ #T35*500 🏋 じゅにゅう #T35*500 🤱 じゅーす #T35*500 🍹 じゅーす #T35*500 🥤 じゅーす #T35*500 🥫 じゅーす #T35*500 🧃 じんじゃ #T35*500 ⛩ じーんず #T35*500 👖 すいえい #T35*500 🏊 すいえい #T35*500 🤿 すいか #T35*500 🍉 すいきゅう #T35*500 🤽 すいしょう #T35*500 🔮 すいせい #T35*500 ☿ すいせい #T35*500 ☄ すいてき #T35*500 💧 すいーつ #T35*500 🥞 すいーつ #T35*500 🍡 すいーつ #T35*500 🍦 すいーつ #T35*500 🍧 すいーつ #T35*500 🍨 すいーつ #T35*500 🍩 すいーつ #T35*500 🍪 すいーつ #T35*500 🍬 すいーつ #T35*500 🍭 すいーつ #T35*500 🍮 すいーつ #T35*500 🍯 すいーつ #T35*500 🍰 すいーつ #T35*500 🥮 すいーつ #T35*500 🥯 すいーつ #T35*500 🧁 すいーつ #T35*500 🧇 すかんく #T35*500 🦨 すかーふ #T35*500 🧣 すかーふ #T35*500 🧕 すきー #T35*500 ⛷ すきー #T35*500 🎿 すくない #T35*500 🤏 すくめる #T35*500 🤷 すくーたー #T35*500 🛴 すくーたー #T35*500 🛵 すけーと #T35*500 ⛸ すけーとぼーど #T35*500 🛹 すごろく #T35*500 🎲 すし #T35*500 🍣 すたー #T35*500 ☄ すてぃっく #T35*500 🥁 すてーき #T35*500 🥩 すのーぼーど #T35*500 🏂 すぱげてぃー #T35*500 🍝 すぱーくりんぐ #T35*500 🥂 すぴーかー #T35*500 🔇 すぴーかー #T35*500 🔈 すぴーかー #T35*500 🔉 すぴーかー #T35*500 🔊 すぷーん #T35*500 🥄 すぽんじ #T35*500 🧽 すぽーつ #T35*500 🎾 すぽーつ #T35*500 ⛷ すぽーつ #T35*500 🎿 すぽーつ #T35*500 🏀 すぽーつ #T35*500 🏁 すぽーつ #T35*500 🏂 すぽーつ #T35*500 🏃 すぽーつ #T35*500 🏄 すぽーつ #T35*500 🏅 すぽーつ #T35*500 🚴 すぽーつ #T35*500 🚵 すぽーつ #T35*500 🥇 すぽーつ #T35*500 🥈 すぽーつ #T35*500 🥉 すぽーつ #T35*500 🏆 すぽーつ #T35*500 🏇 すぽーつ #T35*500 🏈 すぽーつ #T35*500 🏉 すぽーつ #T35*500 🏊 すぽーつ #T35*500 🏋 すぽーつ #T35*500 ⛳ すぽーつ #T35*500 🏌 すぽーつ #T35*500 🏍 すぽーつ #T35*500 🏎 すぽーつ #T35*500 ◎ すぽーつ #T35*500 🎯 すぽーつ #T35*500 🤸 すぽーつ #T35*500 🤹 すぽーつ #T35*500 🤺 すぽーつ #T35*500 🤼 すぽーつ #T35*500 🤽 すぽーつ #T35*500 🤾 すぽーつ #T35*500 🥅 すぽーつ #T35*500 🥊 すぽーつ #T35*500 🥋 すぽーつ #T35*500 🧗 すぽーつ #T35*500 🛹 すぽーつ #T35*500 ⚽ すぽーつ #T35*500 ⚾ すぽーつ #T35*500 🥎 すぽーつ #T35*500 🥏 すぽーつ #T35*500 🥍 すぽーつ #T35*500 🪂 すぽーつ #T35*500 🤿 すまいる #T35*500 ☺ すまいる #T35*500 ☻ すまいる #T35*500 😀 すまいる #T35*500 😁 すまいる #T35*500 😂 すまいる #T35*500 😃 すまいる #T35*500 😄 すまいる #T35*500 😅 すまいる #T35*500 😆 すまいる #T35*500 😇 すまいる #T35*500 😈 すまいる #T35*500 😉 すまいる #T35*500 😊 すまいる #T35*500 😋 すまいる #T35*500 😌 すまいる #T35*500 😍 すまいる #T35*500 😎 すまいる #T35*500 😸 すまいる #T35*500 😹 すまいる #T35*500 😺 すまいる #T35*500 😻 すまいる #T35*500 🙂 すまいる #T35*500 🙋 すまいる #T35*500 ʬ すろっと #T35*500 🎰 すわる #T35*500 🧎 すーつけーす #T35*500 🧳 すーぱーうーまん #T35*500 🦹 すーぱーまん #T35*500 🦸 ずずず #T35*500 💤 ずずず #T35*500 😴 ずつう #T35*500 🤦 ずぼん #T35*500 👖 せい #T35*500 ♂ せい #T35*500 ♀ せいざ #T35*500 ♈ せいざ #T35*500 ♉ せいざ #T35*500 ♊ せいざ #T35*500 ♋ せいざ #T35*500 ♌ せいざ #T35*500 ♍ せいざ #T35*500 ♎ せいざ #T35*500 ♏ せいざ #T35*500 ♐ せいざ #T35*500 ♑ せいざ #T35*500 ♒ せいざ #T35*500 ♓ せいざ #T35*500 🧎 せいじん #T35*500 👨 せいじん #T35*500 👩 せいじん #T35*500 🧑 せいじん #T35*500 🧓 せかい #T35*500 🗺 せき #T35*500 😷 せきめん #T35*500 😳 せっけん #T35*500 🧼 せんたく #T35*500 🧺 せんたく #T35*500 🧽 そうじ #T35*500 🧹 そくてん #T35*500 🤸 そっくす #T35*500 🧦 そふ #T35*500 👴 そふとくりーむ #T35*500 🍦 そふとくりーむ #T35*500 🧁 そふとぼーる #T35*500 🥎 そぼ #T35*500 👵 そり #T35*500 🛷 そろばん #T35*500 🧮 そーだ #T35*500 🥤 ぞう #T35*500 🐘 ぞっと #T35*500 😨 ぞっと #T35*500 😱 ぞっとする #T35*500 😨 ぞっとする #T35*500 😱 ぞんび #T35*500 🧟 たいこ #T35*500 🥁 たいそう #T35*500 🤸 たいふう #T35*500 🌀 たいよう #T35*500 ☉ たいよう #T35*500 ☀ たいよう #T35*500 ☼ たいよう #T35*500 🌣 たいよう #T35*500 🌞 たか #T35*500 🦅 たきしーど #T35*500 🤵 たこ #T35*500 🐙 たこあげ #T35*500 🪁 たこす #T35*500 🌮 たつ #T35*500 🧍 たてもの #T35*500 🏠 たてもの #T35*500 🏡 たてもの #T35*500 🏢 たてもの #T35*500 ⛨ たてもの #T35*500 🏥 たてもの #T35*500 🏦 たてもの #T35*500 🏨 たてもの #T35*500 🏫 たてもの #T35*500 ⛭ たてもの #T35*500 🏭 たてもの #T35*500 🛕 たなばた #T35*500 🎋 たのむ #T35*500 🥺 たべもの #T35*500 🍔 たべもの #T35*500 🍕 たべもの #T35*500 🍖 たべもの #T35*500 🍗 たべもの #T35*500 🦪 たべもの #T35*500 🍘 たべもの #T35*500 🍙 たべもの #T35*500 🍚 たべもの #T35*500 🍛 たべもの #T35*500 🍜 たべもの #T35*500 🍝 たべもの #T35*500 🍞 たべもの #T35*500 🌭 たべもの #T35*500 🌮 たべもの #T35*500 🌯 たべもの #T35*500 🥐 たべもの #T35*500 🥖 たべもの #T35*500 🥙 たべもの #T35*500 🥞 たべもの #T35*500 🍟 たべもの #T35*500 🍠 たべもの #T35*500 🍡 たべもの #T35*500 🍢 たべもの #T35*500 🍣 たべもの #T35*500 🍤 たべもの #T35*500 🍥 たべもの #T35*500 🍦 たべもの #T35*500 🍧 たべもの #T35*500 🍨 たべもの #T35*500 🍩 たべもの #T35*500 🍪 たべもの #T35*500 🍫 たべもの #T35*500 🍬 たべもの #T35*500 🍭 たべもの #T35*500 🍮 たべもの #T35*500 🍯 たべもの #T35*500 🍰 たべもの #T35*500 🧇 たべもの #T35*500 🍱 たべもの #T35*500 🍲 たべもの #T35*500 🥘 たべもの #T35*500 🍳 たべもの #T35*500 🌶 たべもの #T35*500 🌽 たべもの #T35*500 🌰 たべもの #T35*500 🍿 たべもの #T35*500 🍴 たべもの #T35*500 🥄 たべもの #T35*500 🍅 たべもの #T35*500 🍆 たべもの #T35*500 🧀 たべもの #T35*500 🥑 たべもの #T35*500 🥒 たべもの #T35*500 🥓 たべもの #T35*500 🥔 たべもの #T35*500 🥕 たべもの #T35*500 🥗 たべもの #T35*500 🥚 たべもの #T35*500 🥜 たべもの #T35*500 🥟 たべもの #T35*500 🥠 たべもの #T35*500 🥡 たべもの #T35*500 🥢 たべもの #T35*500 🥣 たべもの #T35*500 🥥 たべもの #T35*500 🥦 たべもの #T35*500 🥧 たべもの #T35*500 🥨 たべもの #T35*500 🥩 たべもの #T35*500 🥪 たべもの #T35*500 🥫 たべもの #T35*500 🧆 たべもの #T35*500 🥬 たべもの #T35*500 🧄 たべもの #T35*500 🧅 たべもの #T35*500 🥭 たべもの #T35*500 🥮 たべもの #T35*500 🥯 たべもの #T35*500 🧁 たべもの #T35*500 🧂 たべもの #T35*500 🧈 たまご #T35*500 🥚 たまご #T35*500 🍳 たましい #T35*500 🧞 たまねぎ #T35*500 🧅 たんさん #T35*500 🥤 たんざく #T35*500 🎋 たんじょうび #T35*500 🎂 たんてい #T35*500 🕵 たんぶらー #T35*500 🥃 たーばん #T35*500 👳 だいあもんど #T35*500 💎 だいびんぐ #T35*500 🤿 だいやもんど #T35*500 💎 だっこ #T35*500 🤱 だっしゅ #T35*500 💨 だまる #T35*500 🤫 だんご #T35*500 🍡 だんさー #T35*500 💃 だんさー #T35*500 🕺 だんじょ #T35*500 👫 だんす #T35*500 💃 だんす #T35*500 🕺 だーつ #T35*500 ◎ だーつ #T35*500 🎯 ち #T35*500 🩸 ちきゅう #T35*500 ♁ ちきゅう #T35*500 🌍 ちきゅう #T35*500 🌎 ちきゅう #T35*500 🌏 ちきゅう #T35*500 🌐 ちけっと #T35*500 🎫 ちけっと #T35*500 🎟 ちゃくせき #T35*500 🧎 ちゃっく #T35*500 🤐 ちゅうけい #T35*500 📡 ちゅうごく #T35*500 👲 ちゅうしゃ #T35*500 💉 ちゅうせい #T35*500 ⚲ ちゅーりっぷ #T35*500 🌷 ちょう #T35*500 🦋 ちょうかく #T35*500 🧏 ちょうかくしょうがい #T35*500 🧏 ちょうしょく #T35*500 🥣 ちょうしんき #T35*500 🩺 ちょうみりょう #T35*500 🧂 ちょき #T35*500 ✌ ちょくりつ #T35*500 🧍 ちょこれーと #T35*500 🍫 ちんげんさい #T35*500 🥬 ちーず #T35*500 🧀 つえ #T35*500 ☤ つえ #T35*500 🦯 つかれる #T35*500 😫 つかれる #T35*500 🥱 つきみ #T35*500 🎑 つねる #T35*500 🤏 つの #T35*500 👿 つの #T35*500 😈 つまむ #T35*500 🤏 つり #T35*500 🎣 て #T35*500 ✊ て #T35*500 ✋ て #T35*500 ✌ て #T35*500 👆 て #T35*500 👇 て #T35*500 👈 て #T35*500 👉 て #T35*500 👊 て #T35*500 👋 て #T35*500 👌 て #T35*500 👍 て #T35*500 👎 て #T35*500 👏 て #T35*500 👐 て #T35*500 🤟 て #T35*500 🤟 て #T35*500 🤲 て #T35*500 🤏 て #T35*500 🤝 て #T35*500 👭 て #T35*500 👫 て #T35*500 👬 ていくあうと #T35*500 🥡 てがき #T35*500 ✍ てがみ #T35*500 💌 てきすと #T35*500 ︎ てこんど #T35*500 🥋 てすと #T35*500 📝 てにす #T35*500 🎾 てのひら #T35*500 👐 てぶくろ #T35*500 🧤 てら #T35*500 🛕 てれび #T35*500 📺 てんぐ #T35*500 👺 てんぐ #T35*500 🤥 てんし #T35*500 👼 てんとうむし #T35*500 🐞 てんのうせい #T35*500 ♅ てんびん #T35*500 ⚖ てんびんざ #T35*500 ♎ でぃすく #T35*500 💽 でぃすく #T35*500 💾 でぃすく #T35*500 💿 でぃすく #T35*500 📀 でぃーぶいでぃー #T35*500 📀 ですくとっぷ #T35*500 🖥 でんげん #T35*500 🔌 でんたく #T35*500 🖩 でんち #T35*500 🔋 でんぱ #T35*500 📶 でんわ #T35*500 🤙 でんわ #T35*500 📞 でんわ #T35*500 📱 でんわ #T35*500 📲 でんわ #T35*500 📟 といれ #T35*500 🚹 といれ #T35*500 🚺 といれ #T35*500 🚻 といれ #T35*500 🚾 といれっとぺーぱー #T35*500 🧻 とうがらし #T35*500 🌶 とうきょうたわー #T35*500 🗼 とうだい #T35*500 ⛯ とうもろこし #T35*500 🌽 とかげ #T35*500 🦎 とざん #T35*500 🧗 とじる #T35*500 ❌ とじる #T35*500 🗙 とまと #T35*500 🍅 とまれ #T35*500 🛑 とまる #T35*500 🛑 とら #T35*500 🐅 とら #T35*500 🐯 とらっく #T35*500 ⛟ とらっくぼーる #T35*500 🖲 とらんく #T35*500 🧳 とらんぺっと #T35*500 🎺 とり #T35*500 🐣 とり #T35*500 🐤 とり #T35*500 🐥 とり #T35*500 🐦 とり #T35*500 🦅 とり #T35*500 🦆 とり #T35*500 🦉 とり #T35*500 🦚 とり #T35*500 🦜 とり #T35*500 🦢 とりにく #T35*500 🍗 とろふぃー #T35*500 🏆 どう #T35*500 🥉 どうが #T35*500 🎥 どうぎ #T35*500 🥋 どうぐ #T35*500 🧰 どうぶつ #T35*500 🐀 どうぶつ #T35*500 🐁 どうぶつ #T35*500 🐂 どうぶつ #T35*500 🐃 どうぶつ #T35*500 🐄 どうぶつ #T35*500 🐅 どうぶつ #T35*500 🐆 どうぶつ #T35*500 🐇 どうぶつ #T35*500 🐈 どうぶつ #T35*500 🐉 どうぶつ #T35*500 🐊 どうぶつ #T35*500 🐋 どうぶつ #T35*500 🐌 どうぶつ #T35*500 🐍 どうぶつ #T35*500 🐎 どうぶつ #T35*500 🐏 どうぶつ #T35*500 🐐 どうぶつ #T35*500 🐑 どうぶつ #T35*500 🐒 どうぶつ #T35*500 🐓 どうぶつ #T35*500 🐔 どうぶつ #T35*500 🐕 どうぶつ #T35*500 🦮 どうぶつ #T35*500 🦺 どうぶつ #T35*500 🐖 どうぶつ #T35*500 🐗 どうぶつ #T35*500 🐘 どうぶつ #T35*500 🐙 どうぶつ #T35*500 🐚 どうぶつ #T35*500 🦪 どうぶつ #T35*500 🐛 どうぶつ #T35*500 🐜 どうぶつ #T35*500 🐝 どうぶつ #T35*500 🐞 どうぶつ #T35*500 🐟 どうぶつ #T35*500 🐠 どうぶつ #T35*500 🐡 どうぶつ #T35*500 🐢 どうぶつ #T35*500 🐣 どうぶつ #T35*500 🐤 どうぶつ #T35*500 🐥 どうぶつ #T35*500 🐦 どうぶつ #T35*500 🐧 どうぶつ #T35*500 🐨 どうぶつ #T35*500 🐩 どうぶつ #T35*500 🐪 どうぶつ #T35*500 🐫 どうぶつ #T35*500 🐬 どうぶつ #T35*500 🐭 どうぶつ #T35*500 🐮 どうぶつ #T35*500 🐯 どうぶつ #T35*500 🐰 どうぶつ #T35*500 🐱 どうぶつ #T35*500 🐲 どうぶつ #T35*500 🐳 どうぶつ #T35*500 🐴 どうぶつ #T35*500 🐵 どうぶつ #T35*500 🐶 どうぶつ #T35*500 🐷 どうぶつ #T35*500 🐸 どうぶつ #T35*500 🐹 どうぶつ #T35*500 🐺 どうぶつ #T35*500 🐻 どうぶつ #T35*500 🐼 どうぶつ #T35*500 🐽 どうぶつ #T35*500 🦅 どうぶつ #T35*500 🦆 どうぶつ #T35*500 🦇 どうぶつ #T35*500 🦈 どうぶつ #T35*500 🦉 どうぶつ #T35*500 🦊 どうぶつ #T35*500 🦌 どうぶつ #T35*500 🦍 どうぶつ #T35*500 🦎 どうぶつ #T35*500 🦏 どうぶつ #T35*500 🦐 どうぶつ #T35*500 🦑 どうぶつ #T35*500 🦓 どうぶつ #T35*500 🦒 どうぶつ #T35*500 🦔 どうぶつ #T35*500 🦕 どうぶつ #T35*500 🦖 どうぶつ #T35*500 🦗 どうぶつ #T35*500 🦋 どうぶつ #T35*500 🦘 どうぶつ #T35*500 🦙 どうぶつ #T35*500 🦚 どうぶつ #T35*500 🦛 どうぶつ #T35*500 🦜 どうぶつ #T35*500 🦝 どうぶつ #T35*500 🦞 どうぶつ #T35*500 🦟 どうぶつ #T35*500 🦠 どうぶつ #T35*500 🦡 どうぶつ #T35*500 🦢 どうぶつ #T35*500 🧸 どうぶつ #T35*500 🦥 どうぶつ #T35*500 🦦 どうぶつ #T35*500 🦧 どうぶつ #T35*500 🦨 どうぶつ #T35*500 🦩 どかた #T35*500 👷 どくろ #T35*500 💀 どくろ #T35*500 ☠ どげざ #T35*500 🙏 どせい #T35*500 ♄ どせい #T35*500 🪐 どらきゅら #T35*500 🧛 どらごん #T35*500 🐉 どらごん #T35*500 🐲 どらむ #T35*500 🥁 どれす #T35*500 👗 どれす #T35*500 🥻 どれす #T35*500 👰 どんぶり #T35*500 🍜 どんぶり #T35*500 🥣 どーなつ #T35*500 🍩 ないふ #T35*500 🍴 なえ #T35*500 🌱 ながれぼし #T35*500 ☄ なく #T35*500 😢 なく #T35*500 😭 なく #T35*500 😿 なし #T35*500 🍐 なす #T35*500 🍆 なふだ #T35*500 📛 なべ #T35*500 🍲 なべ #T35*500 🥘 なまけもの #T35*500 🦥 なみ #T35*500 🌊 なると #T35*500 🍥 にい #T35*500 🥈 にく #T35*500 🍖 にく #T35*500 🍗 にく #T35*500 🥩 にくだんご #T35*500 🧆 にじ #T35*500 🌈 にひる #T35*500 😏 にひる #T35*500 😼 にほん #T35*500 🗾 にほん #T35*500 🎌 にゅうがく #T35*500 🎒 にゅうがく #T35*500 🎓 にわとり #T35*500 🐓 にわとり #T35*500 🐔 にんぎょ #T35*500 🧜 にんぎょう #T35*500 🎎 にんしん #T35*500 🤰 にんじん #T35*500 🥕 にんにく #T35*500 🧄 ぬいぐるみ #T35*500 🧸 ねいる #T35*500 💅 ねがい #T35*500 🥺 ねがう #T35*500 🥺 ねくたい #T35*500 👔 ねこ #T35*500 🐈 ねこ #T35*500 🐱 ねじ #T35*500 🔩 ねずみ #T35*500 🐁 ねずみ #T35*500 🐭 ねっと #T35*500 🥅 ねつ #T35*500 🤒 ねむい #T35*500 😪 ねむい #T35*500 🥱 ねる #T35*500 💤 ねる #T35*500 😴 のう #T35*500 🧠 のみもの #T35*500 ☕ のみもの #T35*500 🍵 のみもの #T35*500 🍶 のみもの #T35*500 🍷 のみもの #T35*500 🍸 のみもの #T35*500 🍹 のみもの #T35*500 🍺 のみもの #T35*500 🍻 のみもの #T35*500 🍻 のみもの #T35*500 🍼 のみもの #T35*500 🥂 のみもの #T35*500 🥃 のみもの #T35*500 🥛 のみもの #T35*500 🥤 のみもの #T35*500 🥫 のみもの #T35*500 🧃 のみもの #T35*500 🧉 のみもの #T35*500 🧊 は #T35*500 ☘ は #T35*500 🍀 は #T35*500 ஐ は #T35*500 🍁 は #T35*500 🍂 は #T35*500 🍃 は #T35*500 🍄 は #T35*500 🦷 はい #T35*500 🙆 はいひーる #T35*500 👠 はいびすかす #T35*500 🌺 はく #T35*500 🤢 はく #T35*500 🤮 はくい #T35*500 🥼 はくしゅ #T35*500 👏 はくちょう #T35*500 🦢 はげ #T35*500 🦲 はさみ #T35*500 ✀ はさみ #T35*500 ✁ はさみ #T35*500 ✂ はさみ #T35*500 ✃ はさみ #T35*500 ✄ はし #T35*500 🥢 はずかしい #T35*500 😳 はた #T35*500 ⚐ はた #T35*500 ⚑ はた #T35*500 ⛿ はた #T35*500 🏁 はた #T35*500 🎌 はちみつ #T35*500 🍯 はつでんしょ #T35*500 ⛮ はな #T35*500 ⚘ はな #T35*500 ✿ はな #T35*500 ❀ はな #T35*500 🌷 はな #T35*500 🌸 はな #T35*500 🌹 はな #T35*500 🌺 はな #T35*500 🌻 はな #T35*500 🌼 はな #T35*500 💮 はな #T35*500 👃 はな #T35*500 🎕 はな #T35*500 💐 はな #T35*500 🥀 はなび #T35*500 🎆 はなび #T35*500 🎇 はなふだ #T35*500 🎴 はむすたー #T35*500 🐹 はりねずみ #T35*500 🦔 はれ #T35*500 ☀ はれ #T35*500 ☼ はれ #T35*500 🌣 はろうぃん #T35*500 🎃 はろうぃーん #T35*500 🎃 はんげつ #T35*500 ◐ はんげつ #T35*500 🌓 はんげつ #T35*500 🌔 はんげつ #T35*500 🌖 はんげつ #T35*500 ◑ はんげつ #T35*500 🌗 はんげつ #T35*500 🌛 はんげつ #T35*500 🌜 はんどばっぐ #T35*500 👜 はんどぼーる #T35*500 🤾 はんばーがー #T35*500 🍔 はーと #T35*500 ♡ はーと #T35*500 ♥ はーと #T35*500 ❢ はーと #T35*500 ❣ はーと #T35*500 ❤ はーと #T35*500 ❥ はーと #T35*500 ❦ はーと #T35*500 ❧ はーと #T35*500 💓 はーと #T35*500 💔 はーと #T35*500 💕 はーと #T35*500 💖 はーと #T35*500 💗 はーと #T35*500 💘 はーと #T35*500 💙 はーと #T35*500 💚 はーと #T35*500 💛 はーと #T35*500 💜 はーと #T35*500 🧡 はーと #T35*500 🤍 はーと #T35*500 🤎 はーと #T35*500 💝 はーと #T35*500 💞 はーと #T35*500 💟 はーと #T35*500 🎔 はーと #T35*500 🖤 はーと #T35*500 🥰 はーぶ #T35*500 🌿 ばいおりん #T35*500 🎻 ばいく #T35*500 🏍 ばいく #T35*500 🛴 ばいく #T35*500 🛵 ばいばい #T35*500 👋 ばくだん #T35*500 💣 ばくだん #T35*500 🧨 ばくちく #T35*500 🧨 ばくはつ #T35*500 💥 ばくはつ #T35*500 🤯 ばけっと #T35*500 🥖 ばすけっと #T35*500 🧺 ばすけっとぼーる #T35*500 🏀 ばたー #T35*500 🧈 ばっぐ #T35*500 👜 ばった #T35*500 🦗 ばってりー #T35*500 🔋 ばなな #T35*500 🍌 ばら #T35*500 🌹 ばれー #T35*500 🩰 ばんざい #T35*500 🙌 ばんじょー #T35*500 🪕 ばんそうこう #T35*500 🩹 ぱい #T35*500 🥧 ぱいなっぷる #T35*500 🍍 ぱすた #T35*500 🍝 ぱずる #T35*500 🧩 ぱそこん #T35*500 💻 ぱらしゅーと #T35*500 🪂 ぱらそる #T35*500 ⛱ ぱれっと #T35*500 🎨 ぱん #T35*500 🍞 ぱん #T35*500 🌭 ぱん #T35*500 🌮 ぱん #T35*500 🌯 ぱん #T35*500 🥐 ぱん #T35*500 🥖 ぱん #T35*500 🥙 ぱん #T35*500 🍩 ぱん #T35*500 🥞 ぱん #T35*500 🥪 ぱん #T35*500 🥮 ぱん #T35*500 🥯 ぱんく #T35*500 🤯 ぱんけーき #T35*500 🥞 ぱんだ #T35*500 🐼 ぱんち #T35*500 👊 ぱんち #T35*500 🤛 ぱんち #T35*500 🤜 ぱー #T35*500 ✋ ぱー #T35*500 🤚 ぱーてぃ #T35*500 🎈 ぱーてぃ #T35*500 🎉 ぱーてぃ #T35*500 🎊 ぱーてぃ #T35*500 🥂 ぱーてぃ #T35*500 🥳 ひ #T35*500 🔥 ひ #T35*500 🪔 ひげ #T35*500 🧔 ひげそり #T35*500 🪒 ひこうき #T35*500 ✈ ひつぎ #T35*500 ⚰ ひつじ #T35*500 🐏 ひつじ #T35*500 🐑 ひつじ #T35*500 🦙 ひと #T35*500 👶 ひと #T35*500 👼 ひと #T35*500 👦 ひと #T35*500 👨 ひと #T35*500 👴 ひと #T35*500 👧 ひと #T35*500 👩 ひと #T35*500 🧒 ひと #T35*500 🧑 ひと #T35*500 🧓 ひと #T35*500 👵 ひと #T35*500 👱 ひと #T35*500 👳 ひと #T35*500 👲 ひと #T35*500 🧕 ひと #T35*500 🧔 ひと #T35*500 🤱 ひと #T35*500 🦵 ひと #T35*500 🦶 ひと #T35*500 🦸 ひと #T35*500 🦹 ひと #T35*500 🦴 ひと #T35*500 🦷 ひとさしゆび #T35*500 👆 ひとさしゆび #T35*500 👇 ひとさしゆび #T35*500 👈 ひとさしゆび #T35*500 👉 ひなまつり #T35*500 🎎 ひのいり #T35*500 🌇 ひので #T35*500 🌄 ひので #T35*500 🌅 ひまわり #T35*500 🌻 ひめ #T35*500 👸 ひゃくてん #T35*500 💯 ひょう #T35*500 🐆 ひょうしき #T35*500 🛑 ひよこ #T35*500 🐣 ひよこ #T35*500 🐤 ひよこ #T35*500 🐥 ひよこ #T35*500 🐦 ひらめき #T35*500 💡 ひんと #T35*500 💡 ひーろー #T35*500 🦸 ひーろー #T35*500 🦹 びきに #T35*500 👙 びすけっと #T35*500 🍪 びすけっと #T35*500 🥠 びすけっと #T35*500 🥨 びせいぶつ #T35*500 🦠 びっくり #T35*500 😮 びっくり #T35*500 😰 びっくり #T35*500 😲 びでお #T35*500 📹 びょういん #T35*500 ⛨ びょういん #T35*500 🏥 びょうき #T35*500 😷 びょうき #T35*500 🤒 びょうき #T35*500 🤕 びょうき #T35*500 🤢 びょうき #T35*500 🤮 びょうき #T35*500 🤧 びりやーど #T35*500 🎱 びる #T35*500 🏢 びん #T35*500 🧴 びーる #T35*500 🍺 びーる #T35*500 🍻 ぴあの #T35*500 🎘 ぴあの #T35*500 🎹 ぴえろ #T35*500 🤡 ぴくにっく #T35*500 🧺 ぴくるす #T35*500 🥒 ぴざ #T35*500 🍕 ぴのきお #T35*500 🤥 ぴん #T35*500 📌 ぴん #T35*500 📍 ぴーす #T35*500 ✌ ぴーなっつ #T35*500 🥜 ふぁすなー #T35*500 🤐 ふぁっくす #T35*500 📠 ふぁらふぇる #T35*500 🧆 ふぃぎあ #T35*500 ⛸ ふぃるむ #T35*500 🎞 ふぃるむ #T35*500 🎥 ふぃるむ #T35*500 🎬 ふうせん #T35*500 🎈 ふうりん #T35*500 🎐 ふぇんしんぐ #T35*500 🤺 ふぉーく #T35*500 🍴 ふぉーちゅんくっきー #T35*500 🥠 ふく #T35*500 🎩 ふく #T35*500 👒 ふく #T35*500 🧢 ふく #T35*500 👓 ふく #T35*500 🥽 ふく #T35*500 👔 ふく #T35*500 👕 ふく #T35*500 👙 ふく #T35*500 🩱 ふく #T35*500 🩲 ふく #T35*500 🩳 ふく #T35*500 👚 ふく #T35*500 👗 ふく #T35*500 👘 ふく #T35*500 🧣 ふく #T35*500 🧕 ふく #T35*500 🧤 ふく #T35*500 🧥 ふく #T35*500 🥼 ふく #T35*500 🦺 ふく #T35*500 🥻 ふく #T35*500 👖 ふく #T35*500 🧦 ふく #T35*500 👞 ふく #T35*500 👟 ふく #T35*500 👠 ふく #T35*500 👡 ふく #T35*500 👢 ふく #T35*500 🥾 ふく #T35*500 🥿 ふく #T35*500 🩰 ふく #T35*500 🤵 ふく #T35*500 👰 ふくざつ #T35*500 😕 ふくろう #T35*500 🦉 ふくわらい #T35*500 🤪 ふぐ #T35*500 🐡 ふざける #T35*500 🤪 ふじさん #T35*500 🗻 ふたござ #T35*500 ♊ ふつう #T35*500 😐 ふね #T35*500 ⛴ ふね #T35*500 ⛵ ふらいぱん #T35*500 🍳 ふらふら #T35*500 😵 ふらふら #T35*500 💫 ふらみんご #T35*500 🦩 ふらんすぱん #T35*500 🥖 ふるーつ #T35*500 🍇 ふるーつ #T35*500 🍈 ふるーつ #T35*500 🍉 ふるーつ #T35*500 🍊 ふるーつ #T35*500 🍋 ふるーつ #T35*500 🍌 ふるーつ #T35*500 🍍 ふるーつ #T35*500 🍎 ふるーつ #T35*500 🍏 ふるーつ #T35*500 🍐 ふるーつ #T35*500 🍑 ふるーつ #T35*500 🍒 ふるーつ #T35*500 🍓 ふるーつ #T35*500 🥝 ふれんち #T35*500 🥐 ふれんち #T35*500 🥖 ふろ #T35*500 🧖 ふろ #T35*500 🧼 ふろ #T35*500 🧽 ふろっぴーでぃすく #T35*500 💾 ふんすい #T35*500 ⛲ ぶた #T35*500 🐖 ぶた #T35*500 🐗 ぶた #T35*500 🐷 ぶた #T35*500 🐽 ぶっくまーく #T35*500 🔖 ぶどう #T35*500 🍇 ぶりとー #T35*500 🌯 ぶろっく #T35*500 🧱 ぶろっこり #T35*500 🥦 ぶーけっと #T35*500 🎕 ぶーけっと #T35*500 💐 ぶーつ #T35*500 👢 ぶーつ #T35*500 🥾 ぷりん #T35*500 🍮 ぷりんたー #T35*500 🖨 ぷれぜんと #T35*500 🎁 ぷれぜんと #T35*500 📦 ぷれぜんと #T35*500 🧧 ぷれっつぇる #T35*500 🥨 へあー #T35*500 🦱 へあー #T35*500 🦲 へあー #T35*500 🦳 へいじょううんてん #T35*500 😐 へいじょううんてん #T35*500 😯 へいじょううんてん #T35*500 😶 へいじょうしん #T35*500 😐 へいじょうしん #T35*500 😯 へいじょうしん #T35*500 😶 へっどほん #T35*500 🎧 へび #T35*500 🐍 へんがお #T35*500 🤪 べすと #T35*500 🦺 べる #T35*500 🔔 べる #T35*500 🕭 べろ #T35*500 😛 べろ #T35*500 😜 べろ #T35*500 😝 べんきょう #T35*500 📝 べんとう #T35*500 🍱 べんとう #T35*500 🥡 べー #T35*500 😛 べー #T35*500 😜 べー #T35*500 😝 べーぐる #T35*500 🥯 べーこん #T35*500 🥓 べーる #T35*500 👰 ぺいんとあーと #T35*500 🎭 ぺん #T35*500 ✑ ぺん #T35*500 ✒ ぺんぎん #T35*500 🐧 ほうき #T35*500 🧹 ほうそうきんし #T35*500 🤬 ほうちょう #T35*500 🔪 ほし #T35*500 ⭐ ほし #T35*500 ⭑ ほし #T35*500 ⭒ ほし #T35*500 ✦ ほし #T35*500 ✧ ほし #T35*500 ✨ ほし #T35*500 ✩ ほし #T35*500 ✪ ほし #T35*500 ✫ ほし #T35*500 ✬ ほし #T35*500 ✭ ほし #T35*500 ✮ ほし #T35*500 ✯ ほし #T35*500 ✰ ほし #T35*500 ⚝ ほし #T35*500 🌟 ほし #T35*500 🌠 ほし #T35*500 🤩 ほし #T35*500 🪐 ほじょき #T35*500 🦻 ほじょき #T35*500 🦾 ほじょき #T35*500 🦿 ほちょうき #T35*500 🦻 ほっとけーき #T35*500 🥞 ほっとどっく #T35*500 🌭 ほてる #T35*500 🏨 ほにゅうびん #T35*500 🍼 ほね #T35*500 🦴 ほん #T35*500 📒 ほん #T35*500 📓 ほん #T35*500 📔 ほん #T35*500 📕 ほん #T35*500 📖 ほん #T35*500 📗 ほん #T35*500 📘 ほん #T35*500 📙 ほん #T35*500 📚 ほん #T35*500 🕮 ぼうえんきょう #T35*500 🔭 ぼうげん #T35*500 🤬 ぼうし #T35*500 🎩 ぼうし #T35*500 👒 ぼうし #T35*500 🧢 ぼうず #T35*500 🦲 ぼうだんちょっき #T35*500 🦺 ぼくしんぐ #T35*500 🥊 ぼーと #T35*500 ⛵ ぼーと #T35*500 🛶 ぼーりんぐ #T35*500 🎳 ぼーる #T35*500 ⚽ ぼーる #T35*500 ⚾ ぼーる #T35*500 🥎 ぼーる #T35*500 🥍 ぽかーん #T35*500 😮 ぽけべる #T35*500 📟 ぽすと #T35*500 📮 ぽてと #T35*500 🍟 ぽてと #T35*500 🥔 ぽーち #T35*500 👝 まいく #T35*500 🎙 まいく #T35*500 🎤 まうす #T35*500 🖱 まうす #T35*500 🖲 まうんてんばいく #T35*500 🚵 まきがい #T35*500 🐚 まきもの #T35*500 📜 ますく #T35*500 😷 ますく #T35*500 🎭 まつばづえ #T35*500 🦯 まっさーじ #T35*500 💆 まっしゅるーむ #T35*500 🍄 まて #T35*500 🧉 まにあ #T35*500 🤓 まにきゅあ #T35*500 💅 まほう #T35*500 🧙 まほう #T35*500 🧿 まる #T35*500 🟠 まる #T35*500 🟡 まる #T35*500 🟢 まる #T35*500 🟣 まる #T35*500 🟤 まんげつ #T35*500 ○ まんげつ #T35*500 🌕 まんげつ #T35*500 🌝 まんげつ #T35*500 🎑 まんごー #T35*500 🥭 まんてん #T35*500 💯 まーしゃるあーつ #T35*500 🥋 みかづき #T35*500 🌒 みかづき #T35*500 🌘 みかづき #T35*500 ☽ みかづき #T35*500 ☾ みかづき #T35*500 🌙 みかん #T35*500 🍊 みざる #T35*500 🙈 みずがめざ #T35*500 ♒ みずぎ #T35*500 👙 みずぎ #T35*500 🩱 みずぎ #T35*500 🩲 みずぎ #T35*500 🩳 みつばち #T35*500 🐝 みみ #T35*500 👂 みみ #T35*500 🦻 みみ #T35*500 🧏 みーとぼーる #T35*500 🧆 むげん #T35*500 ♾ むし #T35*500 🐛 むし #T35*500 🦗 むひょうじょう #T35*500 😑 むひょうじょう #T35*500 😯 むひょうじょう #T35*500 😶 むーびー #T35*500 🎥 め #T35*500 👀 め #T35*500 👁 めいおうせい #T35*500 ♇ めがね #T35*500 👓 めがね #T35*500 🥽 めがね #T35*500 🧐 めだる #T35*500 🏅 めだる #T35*500 🎖 めだる #T35*500 🥇 めだる #T35*500 🥈 めだる #T35*500 🥉 めりーごーらんど #T35*500 🎠 めろん #T35*500 🍈 めーる #T35*500 ✉ めーる #T35*500 📧 めーる #T35*500 📨 もうどうけん #T35*500 🦮 もくせい #T35*500 ♃ もぐる #T35*500 🤿 もち #T35*500 🍘 もちかえり #T35*500 🥡 もも #T35*500 🍑 やきいも #T35*500 🍠 やきにく #T35*500 🍖 やきにく #T35*500 🍗 やきにく #T35*500 🥩 やきゅう #T35*500 ⚾ やぎ #T35*500 🐐 やぎざ #T35*500 ♑ やけい #T35*500 🌉 やさい #T35*500 🍅 やさい #T35*500 🍆 やさい #T35*500 🥑 やさい #T35*500 🥒 やさい #T35*500 🥔 やさい #T35*500 🥕 やさい #T35*500 🥗 やさい #T35*500 🥜 やさい #T35*500 🥦 やさい #T35*500 🥬 やさい #T35*500 🧄 やさい #T35*500 🧅 やし #T35*500 🌴 やし #T35*500 🥥 やま #T35*500 ⛰ やもり #T35*500 🦎 ゆうえんち #T35*500 🎠 ゆうえんち #T35*500 🎡 ゆうえんち #T35*500 🎢 ゆうしょう #T35*500 🥇 ゆうれい #T35*500 🧞 ゆき #T35*500 ☃ ゆき #T35*500 ⛄ ゆき #T35*500 ⛇ ゆきだるま #T35*500 ☃ ゆきだるま #T35*500 ⛄ ゆきだるま #T35*500 ⛇ ゆび #T35*500 👆 ゆび #T35*500 👇 ゆび #T35*500 👈 ゆび #T35*500 👉 ゆび #T35*500 👍 ゆび #T35*500 👎 ゆーふぉー #T35*500 🛸 よう #T35*500 🥴 ようかい #T35*500 👾 ようせい #T35*500 👼 ようせい #T35*500 🧚 よが #T35*500 🧘 よげん #T35*500 🥠 よぞら #T35*500 🌃 よだれ #T35*500 🤤 よち #T35*500 🥠 よっぱらい #T35*500 🥴 よーよー #T35*500 🪀 らくだ #T35*500 🐪 らくだ #T35*500 🐫 らくろす #T35*500 🥍 らぐびー #T35*500 🏉 らざにあ #T35*500 🥧 らじお #T35*500 📻 らっかせい #T35*500 🥜 らっこ #T35*500 🦦 らっと #T35*500 🐀 らっぷとっぷ #T35*500 💻 らぶれたー #T35*500 💌 らま #T35*500 🦙 らんどせる #T35*500 🎒 らんぷ #T35*500 🪔 らーめん #T35*500 🍜 りきゅーる #T35*500 🥃 りくじょう #T35*500 🏃 りっぷ #T35*500 💄 りぼん #T35*500 🎀 りぼん #T35*500 🎗 りゅう #T35*500 🐲 りょうり #T35*500 🍳 りんぐ #T35*500 💍 りんぐ #T35*500 💎 りんご #T35*500 🍎 りんご #T35*500 🍏 るーぺ #T35*500 🧫 れしーと #T35*500 🧾 れすりんぐ #T35*500 🤼 れたす #T35*500 🥬 れもん #T35*500 🍋 れんが #T35*500 🧱 れんち #T35*500 🔧 れーす #T35*500 🏍 れーす #T35*500 🏎 ろうそく #T35*500 🕯 ろくが #T35*500 📹 ろっく #T35*500 🔒 ろっく #T35*500 🔓 ろぼっと #T35*500 🤖 ろぼっと #T35*500 🦾 ろぼっと #T35*500 🦿 ろーしょん #T35*500 🧴 ろーすとびーふ #T35*500 🥩 わいん #T35*500 🍷 わいん #T35*500 🥂 わくせい #T35*500 ☉ わくせい #T35*500 ☿ わくせい #T35*500 ♀ わくせい #T35*500 ♁ わくせい #T35*500 ♂ わくせい #T35*500 ♃ わくせい #T35*500 ♄ わくせい #T35*500 ♅ わくせい #T35*500 ♆ わくせい #T35*500 ♇ わくせい #T35*500 🪐 わずか #T35*500 🤏 わっふる #T35*500 🧇 わに #T35*500 🐊 わらい #T35*500 ☺ わらい #T35*500 ☻ わらい #T35*500 😀 わらい #T35*500 😁 わらい #T35*500 😂 わらい #T35*500 😃 わらい #T35*500 😄 わらい #T35*500 😅 わらい #T35*500 😆 わらい #T35*500 😇 わらい #T35*500 😈 わらい #T35*500 😉 わらい #T35*500 😊 わらい #T35*500 😋 わらい #T35*500 😌 わらい #T35*500 😍 わらい #T35*500 😎 わらい #T35*500 🤩 わらい #T35*500 🤪 わらい #T35*500 🤭 わらい #T35*500 😸 わらい #T35*500 😹 わらい #T35*500 😺 わらい #T35*500 😻 わらい #T35*500 🙂 わらい #T35*500 🙋 わらい #T35*500 ʬ ibus-anthy-1.5.17/data/emoji-emoji.t000066400000000000000000000567711475510605700172240ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2015-2019 Takao Fujiwara # Copyright (c) 2015-2019 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. # # # Fedora font package is google-noto-emoji-fonts # Ubuntu font package is fonts-noto-color-emoji # # This file was imported from im-dict-ja # im-dict-ja - Japanese word dictionary set for input method # http://github.com/fujiwarat/im-dict-ja えもじ #T35*500 ☂ えもじ #T35*500 ☔ えもじ #T35*500 ⛆ えもじ #T35*500 ☄ えもじ #T35*500 ☤ えもじ #T35*500 ☥ えもじ #T35*500 ☦ えもじ #T35*500 ☧ えもじ #T35*500 ☨ えもじ #T35*500 ☩ えもじ #T35*500 ☉ えもじ #T35*500 ☿ えもじ #T35*500 ♀ えもじ #T35*500 ♁ えもじ #T35*500 ♂ えもじ #T35*500 ♃ えもじ #T35*500 ♄ えもじ #T35*500 ♅ えもじ #T35*500 ♆ えもじ #T35*500 ♇ えもじ #T35*500 🪐 えもじ #T35*500 ♈ えもじ #T35*500 ♉ えもじ #T35*500 ♊ えもじ #T35*500 ♋ えもじ #T35*500 ♌ えもじ #T35*500 ♍ えもじ #T35*500 ♎ えもじ #T35*500 ♏ えもじ #T35*500 ♐ えもじ #T35*500 ♑ えもじ #T35*500 ♒ えもじ #T35*500 ♓ えもじ #T35*500 ⚀ えもじ #T35*500 ⚁ えもじ #T35*500 ⚂ えもじ #T35*500 ⚃ えもじ #T35*500 ⚄ えもじ #T35*500 ⚅ えもじ #T35*500 ⚓ えもじ #T35*500 ⚔ えもじ #T35*500 ⚖ えもじ #T35*500 ⚞ えもじ #T35*500 ⚟ えもじ #T35*500 ⚠ えもじ #T35*500 ⚡ えもじ #T35*500 ⚰ えもじ #T35*500 ⚲ えもじ #T35*500 ⚽ えもじ #T35*500 ⚾ えもじ #T35*500 🥎 えもじ #T35*500 ☃ えもじ #T35*500 ⛄ えもじ #T35*500 ⛇ えもじ #T35*500 ⛉ えもじ #T35*500 ⛊ えもじ #T35*500 ⛑ えもじ #T35*500 ⛒ えもじ #T35*500 ⛔ えもじ #T35*500 ⛟ えもじ #T35*500 ⛩ えもじ #T35*500 ⛪ えもじ #T35*500 ⛫ えもじ #T35*500 ⛬ えもじ #T35*500 ⛮ えもじ #T35*500 ⛯ えもじ #T35*500 ⛰ えもじ #T35*500 ⛱ えもじ #T35*500 ⛲ えもじ #T35*500 ⛴ えもじ #T35*500 ⛵ えもじ #T35*500 🛶 えもじ #T35*500 ⛸ えもじ #T35*500 ✀ えもじ #T35*500 ✁ えもじ #T35*500 ✂ えもじ #T35*500 ✃ えもじ #T35*500 ✄ えもじ #T35*500 ✈ えもじ #T35*500 ✊ えもじ #T35*500 ✋ えもじ #T35*500 ✌ えもじ #T35*500 ✍ えもじ #T35*500 ✎ えもじ #T35*500 ✏ えもじ #T35*500 ✐ えもじ #T35*500 ✑ えもじ #T35*500 ✒ えもじ #T35*500 ⭐ えもじ #T35*500 ⭑ えもじ #T35*500 ⭒ えもじ #T35*500 ✦ えもじ #T35*500 ✧ えもじ #T35*500 ✨ えもじ #T35*500 ✩ えもじ #T35*500 ✪ えもじ #T35*500 ✫ えもじ #T35*500 ⭐ えもじ #T35*500 ⭑ えもじ #T35*500 ⭒ えもじ #T35*500 ✬ えもじ #T35*500 ✭ えもじ #T35*500 ✮ えもじ #T35*500 ✯ えもじ #T35*500 ✰ えもじ #T35*500 🌀 えもじ #T35*500 🌁 えもじ #T35*500 🌂 えもじ #T35*500 🌃 えもじ #T35*500 🌄 えもじ #T35*500 🌅 えもじ #T35*500 🌇 えもじ #T35*500 🌈 えもじ #T35*500 🌉 えもじ #T35*500 🌊 えもじ #T35*500 🌍 えもじ #T35*500 🌎 えもじ #T35*500 🌏 えもじ #T35*500 🌐 えもじ #T35*500 ● えもじ #T35*500 🌑 えもじ #T35*500 🌒 えもじ #T35*500 ◐ えもじ #T35*500 🌓 えもじ #T35*500 🌔 えもじ #T35*500 ○ えもじ #T35*500 🌕 えもじ #T35*500 🌖 えもじ #T35*500 ◑ えもじ #T35*500 🌗 えもじ #T35*500 🌘 えもじ #T35*500 ☽ えもじ #T35*500 ☾ えもじ #T35*500 🌙 えもじ #T35*500 🌚 えもじ #T35*500 🌛 えもじ #T35*500 🌜 えもじ #T35*500 🌝 えもじ #T35*500 🌞 えもじ #T35*500 ⚝ えもじ #T35*500 🌟 えもじ #T35*500 🌠 えもじ #T35*500 ☀ えもじ #T35*500 ☼ えもじ #T35*500 🌣 えもじ #T35*500 ☁ えもじ #T35*500 ⛅ えもじ #T35*500 🌤 えもじ #T35*500 ⛈ えもじ #T35*500 🌧 えもじ #T35*500 🌱 えもじ #T35*500 🌲 えもじ #T35*500 🌳 えもじ #T35*500 🌴 えもじ #T35*500 🌵 えもじ #T35*500 🌶 えもじ #T35*500 🌾 えもじ #T35*500 🌿 えもじ #T35*500 ☘ えもじ #T35*500 🍀 えもじ #T35*500 ஐ えもじ #T35*500 🍁 えもじ #T35*500 🍂 えもじ #T35*500 🍃 えもじ #T35*500 ⚘ えもじ #T35*500 ✿ えもじ #T35*500 ❀ えもじ #T35*500 🌷 えもじ #T35*500 🌸 えもじ #T35*500 🌹 えもじ #T35*500 🌺 えもじ #T35*500 🌻 えもじ #T35*500 🌼 えもじ #T35*500 💮 えもじ #T35*500 🥀 えもじ #T35*500 🌽 えもじ #T35*500 🌰 えもじ #T35*500 🍄 えもじ #T35*500 🍅 えもじ #T35*500 🍆 えもじ #T35*500 🧀 えもじ #T35*500 🥑 えもじ #T35*500 🥒 えもじ #T35*500 🥓 えもじ #T35*500 🥔 えもじ #T35*500 🥕 えもじ #T35*500 🥦 えもじ #T35*500 🥗 えもじ #T35*500 🥚 えもじ #T35*500 🥜 えもじ #T35*500 🍇 えもじ #T35*500 🍈 えもじ #T35*500 🍉 えもじ #T35*500 🍊 えもじ #T35*500 🍋 えもじ #T35*500 🍌 えもじ #T35*500 🍍 えもじ #T35*500 🍎 えもじ #T35*500 🍏 えもじ #T35*500 🍐 えもじ #T35*500 🍑 えもじ #T35*500 🍒 えもじ #T35*500 🍓 えもじ #T35*500 🥝 えもじ #T35*500 🥥 えもじ #T35*500 🍔 えもじ #T35*500 🍕 えもじ #T35*500 🍖 えもじ #T35*500 🍗 えもじ #T35*500 🥩 えもじ #T35*500 🍘 えもじ #T35*500 🍙 えもじ #T35*500 🍚 えもじ #T35*500 🍛 えもじ #T35*500 🍜 えもじ #T35*500 🍝 えもじ #T35*500 🍞 えもじ #T35*500 🌭 えもじ #T35*500 🌮 えもじ #T35*500 🌯 えもじ #T35*500 🥐 えもじ #T35*500 🥖 えもじ #T35*500 🥪 えもじ #T35*500 🥙 えもじ #T35*500 🥞 えもじ #T35*500 🍟 えもじ #T35*500 🥟 えもじ #T35*500 🍠 えもじ #T35*500 🍡 えもじ #T35*500 🍢 えもじ #T35*500 🍣 えもじ #T35*500 🍤 えもじ #T35*500 🍥 えもじ #T35*500 🍦 えもじ #T35*500 🍧 えもじ #T35*500 🍨 えもじ #T35*500 🍩 えもじ #T35*500 🍪 えもじ #T35*500 🍫 えもじ #T35*500 🍬 えもじ #T35*500 🍭 えもじ #T35*500 🍮 えもじ #T35*500 🍯 えもじ #T35*500 🍰 えもじ #T35*500 🧇 えもじ #T35*500 🥠 えもじ #T35*500 🥧 えもじ #T35*500 🥨 えもじ #T35*500 🧆 えもじ #T35*500 🥬 えもじ #T35*500 🧄 えもじ #T35*500 🧅 えもじ #T35*500 🥭 えもじ #T35*500 🥮 えもじ #T35*500 🥯 えもじ #T35*500 🧁 えもじ #T35*500 🧂 えもじ #T35*500 🧈 えもじ #T35*500 🍱 えもじ #T35*500 🥡 えもじ #T35*500 🥣 えもじ #T35*500 🍲 えもじ #T35*500 🥘 えもじ #T35*500 🍳 えもじ #T35*500 🍴 えもじ #T35*500 🥄 えもじ #T35*500 🥢 えもじ #T35*500 ☕ えもじ #T35*500 🍵 えもじ #T35*500 🍶 えもじ #T35*500 🍷 えもじ #T35*500 🍸 えもじ #T35*500 🍹 えもじ #T35*500 🍺 えもじ #T35*500 🍻 えもじ #T35*500 🍻 えもじ #T35*500 🍼 えもじ #T35*500 🥂 えもじ #T35*500 🥃 えもじ #T35*500 🥛 えもじ #T35*500 🥫 えもじ #T35*500 🧃 えもじ #T35*500 🧉 えもじ #T35*500 🧊 えもじ #T35*500 🎀 えもじ #T35*500 🎁 えもじ #T35*500 📦 えもじ #T35*500 🎂 えもじ #T35*500 🎃 えもじ #T35*500 🎄 えもじ #T35*500 🎅 えもじ #T35*500 🎆 えもじ #T35*500 🎇 えもじ #T35*500 🎈 えもじ #T35*500 🎉 えもじ #T35*500 🎊 えもじ #T35*500 🎋 えもじ #T35*500 🎌 えもじ #T35*500 🎍 えもじ #T35*500 🎎 えもじ #T35*500 🎏 えもじ #T35*500 🎐 えもじ #T35*500 🎑 えもじ #T35*500 🎒 えもじ #T35*500 🎓 えもじ #T35*500 🎕 えもじ #T35*500 💐 えもじ #T35*500 🎖 えもじ #T35*500 🎗 えもじ #T35*500 🎘 えもじ #T35*500 🎞 えもじ #T35*500 🎥 えもじ #T35*500 🎦 えもじ #T35*500 🎬 えもじ #T35*500 🎫 えもじ #T35*500 🎟 えもじ #T35*500 🎠 えもじ #T35*500 🎡 えもじ #T35*500 🎢 えもじ #T35*500 🎣 えもじ #T35*500 🎨 えもじ #T35*500 🎪 えもじ #T35*500 🎭 えもじ #T35*500 🎮 えもじ #T35*500 ◎ えもじ #T35*500 🎯 えもじ #T35*500 🎰 えもじ #T35*500 🎱 えもじ #T35*500 🎲 えもじ #T35*500 🎳 えもじ #T35*500 🎴 えもじ #T35*500 🧿 えもじ #T35*500 🧩 えもじ #T35*500 🧸 えもじ #T35*500 🪀 えもじ #T35*500 🪁 えもじ #T35*500 ♟ えもじ #T35*500 🎹 えもじ #T35*500 🎙 えもじ #T35*500 🎤 えもじ #T35*500 🎧 えもじ #T35*500 🎵 えもじ #T35*500 🎶 えもじ #T35*500 🎷 えもじ #T35*500 🎸 えもじ #T35*500 🎺 えもじ #T35*500 🎻 えもじ #T35*500 🎼 えもじ #T35*500 🪕 えもじ #T35*500 🎾 えもじ #T35*500 ⛷ えもじ #T35*500 🎿 えもじ #T35*500 🏀 えもじ #T35*500 ⚐ えもじ #T35*500 ⚑ えもじ #T35*500 ⛿ えもじ #T35*500 🏁 えもじ #T35*500 🏂 えもじ #T35*500 🏃 えもじ #T35*500 🏄 えもじ #T35*500 🏅 えもじ #T35*500 🥇 えもじ #T35*500 🥈 えもじ #T35*500 🥉 えもじ #T35*500 🏆 えもじ #T35*500 🏇 えもじ #T35*500 🏈 えもじ #T35*500 🏉 えもじ #T35*500 🏊 えもじ #T35*500 🏋 えもじ #T35*500 ⛳ えもじ #T35*500 🏌 えもじ #T35*500 🏍 えもじ #T35*500 🚴 えもじ #T35*500 🚵 えもじ #T35*500 🛴 えもじ #T35*500 🛵 えもじ #T35*500 🏎 えもじ #T35*500 🛺 えもじ #T35*500 🤸 えもじ #T35*500 🤹 えもじ #T35*500 🤺 えもじ #T35*500 🤼 えもじ #T35*500 🤽 えもじ #T35*500 🤾 えもじ #T35*500 🥅 えもじ #T35*500 🥊 えもじ #T35*500 🥋 えもじ #T35*500 🧗 えもじ #T35*500 🧘 えもじ #T35*500 🛹 えもじ #T35*500 🥏 えもじ #T35*500 🥍 えもじ #T35*500 🪂 えもじ #T35*500 🤿 えもじ #T35*500 🏠 えもじ #T35*500 🏡 えもじ #T35*500 🏢 えもじ #T35*500 ⛨ えもじ #T35*500 🏥 えもじ #T35*500 🏦 えもじ #T35*500 🏨 えもじ #T35*500 🏫 えもじ #T35*500 ⛭ えもじ #T35*500 🏭 えもじ #T35*500 🛕 えもじ #T35*500 🐀 えもじ #T35*500 🐁 えもじ #T35*500 🐂 えもじ #T35*500 🐃 えもじ #T35*500 🐄 えもじ #T35*500 🐅 えもじ #T35*500 🐆 えもじ #T35*500 🐇 えもじ #T35*500 🐈 えもじ #T35*500 🐉 えもじ #T35*500 🐊 えもじ #T35*500 🐋 えもじ #T35*500 🐌 えもじ #T35*500 🐍 えもじ #T35*500 🐎 えもじ #T35*500 🐏 えもじ #T35*500 🐐 えもじ #T35*500 🐑 えもじ #T35*500 🐒 えもじ #T35*500 🐓 えもじ #T35*500 🐔 えもじ #T35*500 🐕 えもじ #T35*500 🦮 えもじ #T35*500 🦺 えもじ #T35*500 🐖 えもじ #T35*500 🐗 えもじ #T35*500 🐘 えもじ #T35*500 🐙 えもじ #T35*500 🐚 えもじ #T35*500 🦪 えもじ #T35*500 🐛 えもじ #T35*500 🐜 えもじ #T35*500 🐝 えもじ #T35*500 🐞 えもじ #T35*500 🕷 えもじ #T35*500 🕸 えもじ #T35*500 🦂 えもじ #T35*500 🐟 えもじ #T35*500 🐠 えもじ #T35*500 🐡 えもじ #T35*500 🐣 えもじ #T35*500 🐤 えもじ #T35*500 🐥 えもじ #T35*500 🐦 えもじ #T35*500 🐧 えもじ #T35*500 🐨 えもじ #T35*500 🐩 えもじ #T35*500 🐪 えもじ #T35*500 🐫 えもじ #T35*500 🐬 えもじ #T35*500 🐭 えもじ #T35*500 🐮 えもじ #T35*500 🐯 えもじ #T35*500 🐰 えもじ #T35*500 🐱 えもじ #T35*500 🐲 えもじ #T35*500 🐳 えもじ #T35*500 🐴 えもじ #T35*500 🐵 えもじ #T35*500 🐶 えもじ #T35*500 🐷 えもじ #T35*500 🐸 えもじ #T35*500 🐹 えもじ #T35*500 🐺 えもじ #T35*500 🐻 えもじ #T35*500 🐼 えもじ #T35*500 🐽 えもじ #T35*500 🦅 えもじ #T35*500 🦆 えもじ #T35*500 🦇 えもじ #T35*500 🦈 えもじ #T35*500 🦉 えもじ #T35*500 🦊 えもじ #T35*500 🦌 えもじ #T35*500 🦍 えもじ #T35*500 🦎 えもじ #T35*500 🦏 えもじ #T35*500 🦐 えもじ #T35*500 🦑 えもじ #T35*500 🦓 えもじ #T35*500 🦒 えもじ #T35*500 🦔 えもじ #T35*500 🦕 えもじ #T35*500 🦖 えもじ #T35*500 🦗 えもじ #T35*500 🦋 えもじ #T35*500 🦘 えもじ #T35*500 🦙 えもじ #T35*500 🦚 えもじ #T35*500 🦛 えもじ #T35*500 🦜 えもじ #T35*500 🦝 えもじ #T35*500 🦞 えもじ #T35*500 🦟 えもじ #T35*500 🦠 えもじ #T35*500 🦡 えもじ #T35*500 🦢 えもじ #T35*500 🦥 えもじ #T35*500 🦦 えもじ #T35*500 🦧 えもじ #T35*500 🦨 えもじ #T35*500 🦩 えもじ #T35*500 👀 えもじ #T35*500 👁 えもじ #T35*500 👂 えもじ #T35*500 👃 えもじ #T35*500 👄 えもじ #T35*500 👅 えもじ #T35*500 👆 えもじ #T35*500 👇 えもじ #T35*500 👈 えもじ #T35*500 👉 えもじ #T35*500 👊 えもじ #T35*500 👋 えもじ #T35*500 👌 えもじ #T35*500 👍 えもじ #T35*500 👎 えもじ #T35*500 👏 えもじ #T35*500 👐 えもじ #T35*500 🤟 えもじ #T35*500 🤲 えもじ #T35*500 🤏 えもじ #T35*500 ♔ えもじ #T35*500 ♕ えもじ #T35*500 ♚ えもじ #T35*500 ♛ えもじ #T35*500 👑 えもじ #T35*500 🎩 えもじ #T35*500 👒 えもじ #T35*500 🧢 えもじ #T35*500 👓 えもじ #T35*500 🥽 えもじ #T35*500 👔 えもじ #T35*500 👕 えもじ #T35*500 👖 えもじ #T35*500 👗 えもじ #T35*500 👘 えもじ #T35*500 👙 えもじ #T35*500 🩱 えもじ #T35*500 🩲 えもじ #T35*500 🩳 えもじ #T35*500 👚 えもじ #T35*500 🧣 えもじ #T35*500 🧤 えもじ #T35*500 🧥 えもじ #T35*500 🥼 えもじ #T35*500 🦺 えもじ #T35*500 🥻 えもじ #T35*500 🧦 えもじ #T35*500 👛 えもじ #T35*500 👜 えもじ #T35*500 👝 えもじ #T35*500 👞 えもじ #T35*500 👟 えもじ #T35*500 👠 えもじ #T35*500 👡 えもじ #T35*500 👢 えもじ #T35*500 🥾 えもじ #T35*500 🥿 えもじ #T35*500 🩰 えもじ #T35*500 👣 えもじ #T35*500 👤 えもじ #T35*500 👥 えもじ #T35*500 👶 えもじ #T35*500 👼 えもじ #T35*500 👦 えもじ #T35*500 👧 えもじ #T35*500 👨 えもじ #T35*500 👩 えもじ #T35*500 🧒 えもじ #T35*500 🧑 えもじ #T35*500 🧓 えもじ #T35*500 👴 えもじ #T35*500 👵 えもじ #T35*500 👱 えもじ #T35*500 👳 えもじ #T35*500 👰 えもじ #T35*500 🧕 えもじ #T35*500 🧔 えもじ #T35*500 🤱 えもじ #T35*500 🦸 えもじ #T35*500 🦹 えもじ #T35*500 🦵 えもじ #T35*500 🦶 えもじ #T35*500 🦴 えもじ #T35*500 🦷 えもじ #T35*500 👪 えもじ #T35*500 👫 えもじ #T35*500 👬 えもじ #T35*500 👭 えもじ #T35*500 🚹 えもじ #T35*500 🚺 えもじ #T35*500 🚻 えもじ #T35*500 🚾 えもじ #T35*500 🦻 えもじ #T35*500 🦾 えもじ #T35*500 🦿 えもじ #T35*500 🧏 えもじ #T35*500 🧍 えもじ #T35*500 🧎 えもじ #T35*500 🦼 えもじ #T35*500 🦽 えもじ #T35*500 🦯 えもじ #T35*500 🧖 えもじ #T35*500 🤴 えもじ #T35*500 👸 えもじ #T35*500 👹 えもじ #T35*500 👺 えもじ #T35*500 👻 えもじ #T35*500 👼 えもじ #T35*500 👽 えもじ #T35*500 👾 えもじ #T35*500 💀 えもじ #T35*500 ☠ えもじ #T35*500 🧙 えもじ #T35*500 🧚 えもじ #T35*500 🧛 えもじ #T35*500 🧜 えもじ #T35*500 🧝 えもじ #T35*500 🧞 えもじ #T35*500 🧟 えもじ #T35*500 💁 えもじ #T35*500 👮 えもじ #T35*500 🕵 えもじ #T35*500 💂 えもじ #T35*500 👷 えもじ #T35*500 💃 えもじ #T35*500 💄 えもじ #T35*500 💅 えもじ #T35*500 💆 えもじ #T35*500 💇 えもじ #T35*500 💈 えもじ #T35*500 💉 えもじ #T35*500 💊 えもじ #T35*500 💋 えもじ #T35*500 🗢 えもじ #T35*500 💌 えもじ #T35*500 💍 えもじ #T35*500 💎 えもじ #T35*500 ⚭ えもじ #T35*500 💒 えもじ #T35*500 💏 えもじ #T35*500 ♡ えもじ #T35*500 ♥ えもじ #T35*500 ❢ えもじ #T35*500 ❣ えもじ #T35*500 ❤ えもじ #T35*500 ❥ えもじ #T35*500 ❦ えもじ #T35*500 ❧ えもじ #T35*500 💓 えもじ #T35*500 💔 えもじ #T35*500 💕 えもじ #T35*500 💖 えもじ #T35*500 💗 えもじ #T35*500 💘 えもじ #T35*500 💙 えもじ #T35*500 💚 えもじ #T35*500 💛 えもじ #T35*500 💜 えもじ #T35*500 🧡 えもじ #T35*500 🤍 えもじ #T35*500 🤎 えもじ #T35*500 💝 えもじ #T35*500 💞 えもじ #T35*500 💟 えもじ #T35*500 🎔 えもじ #T35*500 🖤 えもじ #T35*500 💡 えもじ #T35*500 💢 えもじ #T35*500 💣 えもじ #T35*500 💤 えもじ #T35*500 💥 えもじ #T35*500 💦 えもじ #T35*500 💧 えもじ #T35*500 💨 えもじ #T35*500 💩 えもじ #T35*500 💪 えもじ #T35*500 💫 えもじ #T35*500 💬 えもじ #T35*500 💭 えもじ #T35*500 .。oO えもじ #T35*500 💯 えもじ #T35*500 📌 えもじ #T35*500 📍 えもじ #T35*500 📎 えもじ #T35*500 🔇 えもじ #T35*500 🔈 えもじ #T35*500 🔉 えもじ #T35*500 🔊 えもじ #T35*500 🔋 えもじ #T35*500 🔌 えもじ #T35*500 🔍 えもじ #T35*500 🔎 えもじ #T35*500 📑 えもじ #T35*500 📒 えもじ #T35*500 📓 えもじ #T35*500 📔 えもじ #T35*500 📕 えもじ #T35*500 📖 えもじ #T35*500 📗 えもじ #T35*500 📘 えもじ #T35*500 📙 えもじ #T35*500 📚 えもじ #T35*500 📛 えもじ #T35*500 📜 えもじ #T35*500 📝 えもじ #T35*500 ✉ えもじ #T35*500 📧 えもじ #T35*500 📨 えもじ #T35*500 📮 えもじ #T35*500 📱 えもじ #T35*500 📲 えもじ #T35*500 📞 えもじ #T35*500 📟 えもじ #T35*500 📠 えもじ #T35*500 📶 えもじ #T35*500 📷 えもじ #T35*500 📹 えもじ #T35*500 📺 えもじ #T35*500 📻 えもじ #T35*500 ⚿ えもじ #T35*500 🔑 えもじ #T35*500 🔒 えもじ #T35*500 🔓 えもじ #T35*500 🔖 えもじ #T35*500 🔥 えもじ #T35*500 🪔 えもじ #T35*500 🔧 えもじ #T35*500 ⚒ えもじ #T35*500 ⛏ えもじ #T35*500 🔨 えもじ #T35*500 🔩 えもじ #T35*500 🔪 えもじ #T35*500 🔫 えもじ #T35*500 🔬 えもじ #T35*500 🔭 えもじ #T35*500 📡 えもじ #T35*500 🔮 えもじ #T35*500 ✡ えもじ #T35*500 🔯 えもじ #T35*500 🔰 えもじ #T35*500 ✞ えもじ #T35*500 🕆 えもじ #T35*500 🕇 えもじ #T35*500 🔔 えもじ #T35*500 🕭 えもじ #T35*500 🕮 えもじ #T35*500 🕯 えもじ #T35*500 🕳 えもじ #T35*500 💻 えもじ #T35*500 🖥 えもじ #T35*500 💽 えもじ #T35*500 💾 えもじ #T35*500 💿 えもじ #T35*500 📀 えもじ #T35*500 🖱 えもじ #T35*500 🖲 えもじ #T35*500 ⌨ えもじ #T35*500 🖮 えもじ #T35*500 🖰 えもじ #T35*500 🖨 えもじ #T35*500 🖩 えもじ #T35*500 🗕 えもじ #T35*500 🗖 えもじ #T35*500 🗘 えもじ #T35*500 ❌ えもじ #T35*500 🗙 えもじ #T35*500 🗺 えもじ #T35*500 🗻 えもじ #T35*500 🗼 えもじ #T35*500 🗾 えもじ #T35*500 ☹ えもじ #T35*500 ☺ えもじ #T35*500 ☻ えもじ #T35*500 😀 えもじ #T35*500 😁 えもじ #T35*500 😂 えもじ #T35*500 😃 えもじ #T35*500 😄 えもじ #T35*500 😅 えもじ #T35*500 😆 えもじ #T35*500 😇 えもじ #T35*500 👿 えもじ #T35*500 😈 えもじ #T35*500 😉 えもじ #T35*500 😊 えもじ #T35*500 😋 えもじ #T35*500 😌 えもじ #T35*500 😍 えもじ #T35*500 😎 えもじ #T35*500 😏 えもじ #T35*500 😐 えもじ #T35*500 😑 えもじ #T35*500 😒 えもじ #T35*500 😓 えもじ #T35*500 😔 えもじ #T35*500 😕 えもじ #T35*500 😖 えもじ #T35*500 😗 えもじ #T35*500 😘 えもじ #T35*500 😙 えもじ #T35*500 😚 えもじ #T35*500 😛 えもじ #T35*500 😜 えもじ #T35*500 😝 えもじ #T35*500 😞 えもじ #T35*500 😡 えもじ #T35*500 😢 えもじ #T35*500 😣 えもじ #T35*500 😤 えもじ #T35*500 😥 えもじ #T35*500 😦 えもじ #T35*500 😧 えもじ #T35*500 😨 えもじ #T35*500 😩 えもじ #T35*500 😪 えもじ #T35*500 😫 えもじ #T35*500 😬 えもじ #T35*500 😭 えもじ #T35*500 😮 えもじ #T35*500 😯 えもじ #T35*500 😰 えもじ #T35*500 😱 えもじ #T35*500 😲 えもじ #T35*500 😳 えもじ #T35*500 😴 えもじ #T35*500 😵 えもじ #T35*500 😶 えもじ #T35*500 😷 えもじ #T35*500 😸 えもじ #T35*500 😹 えもじ #T35*500 😺 えもじ #T35*500 😻 えもじ #T35*500 😼 えもじ #T35*500 😽 えもじ #T35*500 😾 えもじ #T35*500 😿 えもじ #T35*500 🙀 えもじ #T35*500 🙁 えもじ #T35*500 🙂 えもじ #T35*500 🙅 えもじ #T35*500 🙆 えもじ #T35*500 🙇 えもじ #T35*500 🙈 えもじ #T35*500 🙉 えもじ #T35*500 🙊 えもじ #T35*500 🙋 えもじ #T35*500 🙌 えもじ #T35*500 🙍 えもじ #T35*500 🙎 えもじ #T35*500 🙏 えもじ #T35*500 ʬ えもじ #T35*500 👲 えもじ #T35*500 🛑 えもじ #T35*500 🛒 えもじ #T35*500 🤐 えもじ #T35*500 🤒 えもじ #T35*500 🤓 えもじ #T35*500 🤔 えもじ #T35*500 🤕 えもじ #T35*500 🤖 えもじ #T35*500 🤙 えもじ #T35*500 🤚 えもじ #T35*500 🤛 えもじ #T35*500 🤜 えもじ #T35*500 🤝 えもじ #T35*500 🤞 えもじ #T35*500 🤠 えもじ #T35*500 🤡 えもじ #T35*500 🤢 えもじ #T35*500 🤮 えもじ #T35*500 🤣 えもじ #T35*500 🤩 えもじ #T35*500 🤪 えもじ #T35*500 🤭 えもじ #T35*500 🤤 えもじ #T35*500 🤥 えもじ #T35*500 🤦 えもじ #T35*500 🤧 えもじ #T35*500 🤥 えもじ #T35*500 🤯 えもじ #T35*500 🤬 えもじ #T35*500 🤫 えもじ #T35*500 🧐 えもじ #T35*500 🥰 えもじ #T35*500 🥳 えもじ #T35*500 🥴 えもじ #T35*500 🥵 えもじ #T35*500 🥶 えもじ #T35*500 🥺 えもじ #T35*500 🥱 えもじ #T35*500 🤰 えもじ #T35*500 🤵 えもじ #T35*500 🤶 えもじ #T35*500 🤷 えもじ #T35*500 🕺 えもじ #T35*500 🤳 えもじ #T35*500 🥁 えもじ #T35*500 🧠 えもじ #T35*500 🛸 えもじ #T35*500 🛷 えもじ #T35*500 🧭 えもじ #T35*500 🧱 えもじ #T35*500 🧳 えもじ #T35*500 🧨 えもじ #T35*500 🧧 えもじ #T35*500 🧿 えもじ #T35*500 🧵 えもじ #T35*500 🧶 えもじ #T35*500 🧮 えもじ #T35*500 🧾 えもじ #T35*500 🧰 えもじ #T35*500 🧲 えもじ #T35*500 🧪 えもじ #T35*500 🧫 えもじ #T35*500 🧬 えもじ #T35*500 🧴 えもじ #T35*500 🧷 えもじ #T35*500 🧹 えもじ #T35*500 🧺 えもじ #T35*500 🧻 えもじ #T35*500 🧼 えもじ #T35*500 🧽 えもじ #T35*500 🧯 えもじ #T35*500 ♾ えもじ #T35*500 🪓 えもじ #T35*500 🩸 えもじ #T35*500 🩹 えもじ #T35*500 🩺 えもじ #T35*500 🪑 えもじ #T35*500 🪒 えもじ #T35*500 🟠 えもじ #T35*500 🟡 えもじ #T35*500 🟢 えもじ #T35*500 🟣 えもじ #T35*500 🟤 えもじ #T35*500 🟥 えもじ #T35*500 🟦 えもじ #T35*500 🟧 えもじ #T35*500 🟨 えもじ #T35*500 🟩 えもじ #T35*500 🟪 えもじ #T35*500 🟫 えもじ #T35*500 🏻 えもじ #T35*500 🏼 えもじ #T35*500 🏽 えもじ #T35*500 🏾 えもじ #T35*500 🏿 えもじ #T35*500 🦰 えもじ #T35*500 🦱 えもじ #T35*500 🦲 えもじ #T35*500 🦳 えもじ #T35*500 ‍ えもじ #T35*500 ︎ えもじ #T35*500 ️ ibus-anthy-1.5.17/data/era.t000066400000000000000000000406661475510605700155630ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2025 Takao Fujiwara # Copyright (c) 2010-2013 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 file was imported from im-dict-ja # im-dict-ja - Japanese word dictionary set for input method # http://github.com/fujiwarat/im-dict-ja しょうわ1 #T35*500 昭和1 しょうわ1 #T35*500 1926 しょうわ10 #T35*500 昭和10 しょうわ10 #T35*500 1935 しょうわ11 #T35*500 昭和11 しょうわ11 #T35*500 1936 しょうわ12 #T35*500 昭和12 しょうわ12 #T35*500 1937 しょうわ13 #T35*500 昭和13 しょうわ13 #T35*500 1938 しょうわ14 #T35*500 昭和14 しょうわ14 #T35*500 1939 しょうわ15 #T35*500 昭和15 しょうわ15 #T35*500 1940 しょうわ16 #T35*500 昭和16 しょうわ16 #T35*500 1941 しょうわ17 #T35*500 昭和17 しょうわ17 #T35*500 1942 しょうわ18 #T35*500 昭和18 しょうわ18 #T35*500 1943 しょうわ19 #T35*500 昭和19 しょうわ19 #T35*500 1944 しょうわ2 #T35*500 昭和2 しょうわ2 #T35*500 1927 しょうわ20 #T35*500 昭和20 しょうわ20 #T35*500 1945 しょうわ21 #T35*500 昭和21 しょうわ21 #T35*500 1946 しょうわ22 #T35*500 昭和22 しょうわ22 #T35*500 1947 しょうわ23 #T35*500 昭和23 しょうわ23 #T35*500 1948 しょうわ24 #T35*500 昭和24 しょうわ24 #T35*500 1949 しょうわ25 #T35*500 昭和25 しょうわ25 #T35*500 1950 しょうわ26 #T35*500 昭和26 しょうわ26 #T35*500 1951 しょうわ27 #T35*500 昭和27 しょうわ27 #T35*500 1952 しょうわ28 #T35*500 昭和28 しょうわ28 #T35*500 1953 しょうわ29 #T35*500 昭和29 しょうわ29 #T35*500 1954 しょうわ3 #T35*500 昭和3 しょうわ3 #T35*500 1928 しょうわ30 #T35*500 昭和30 しょうわ30 #T35*500 1955 しょうわ31 #T35*500 昭和31 しょうわ31 #T35*500 1956 しょうわ32 #T35*500 昭和32 しょうわ32 #T35*500 1957 しょうわ33 #T35*500 昭和33 しょうわ33 #T35*500 1958 しょうわ34 #T35*500 昭和34 しょうわ34 #T35*500 1959 しょうわ35 #T35*500 昭和35 しょうわ35 #T35*500 1960 しょうわ36 #T35*500 昭和36 しょうわ36 #T35*500 1961 しょうわ37 #T35*500 昭和37 しょうわ37 #T35*500 1962 しょうわ38 #T35*500 昭和38 しょうわ38 #T35*500 1963 しょうわ39 #T35*500 昭和39 しょうわ39 #T35*500 1964 しょうわ4 #T35*500 昭和4 しょうわ4 #T35*500 1929 しょうわ40 #T35*500 昭和40 しょうわ40 #T35*500 1965 しょうわ41 #T35*500 昭和41 しょうわ41 #T35*500 1966 しょうわ42 #T35*500 昭和42 しょうわ42 #T35*500 1967 しょうわ43 #T35*500 昭和43 しょうわ43 #T35*500 1968 しょうわ44 #T35*500 昭和44 しょうわ44 #T35*500 1969 しょうわ45 #T35*500 昭和45 しょうわ45 #T35*500 1970 しょうわ46 #T35*500 昭和46 しょうわ46 #T35*500 1971 しょうわ47 #T35*500 昭和47 しょうわ47 #T35*500 1972 しょうわ48 #T35*500 昭和48 しょうわ48 #T35*500 1973 しょうわ49 #T35*500 昭和49 しょうわ49 #T35*500 1974 しょうわ5 #T35*500 昭和5 しょうわ5 #T35*500 1930 しょうわ50 #T35*500 昭和50 しょうわ50 #T35*500 1975 しょうわ51 #T35*500 昭和51 しょうわ51 #T35*500 1976 しょうわ52 #T35*500 昭和52 しょうわ52 #T35*500 1977 しょうわ53 #T35*500 昭和53 しょうわ53 #T35*500 1978 しょうわ54 #T35*500 昭和54 しょうわ54 #T35*500 1979 しょうわ55 #T35*500 昭和55 しょうわ55 #T35*500 1980 しょうわ56 #T35*500 昭和56 しょうわ56 #T35*500 1981 しょうわ57 #T35*500 昭和57 しょうわ57 #T35*500 1982 しょうわ58 #T35*500 昭和58 しょうわ58 #T35*500 1983 しょうわ59 #T35*500 昭和59 しょうわ59 #T35*500 1984 しょうわ6 #T35*500 昭和6 しょうわ6 #T35*500 1931 しょうわ60 #T35*500 昭和60 しょうわ60 #T35*500 1985 しょうわ61 #T35*500 昭和61 しょうわ61 #T35*500 1986 しょうわ62 #T35*500 昭和62 しょうわ62 #T35*500 1987 しょうわ63 #T35*500 昭和63 しょうわ63 #T35*500 1988 しょうわ64 #T35*500 昭和64 しょうわ64 #T35*500 1989 しょうわ7 #T35*500 昭和7 しょうわ7 #T35*500 1932 しょうわ8 #T35*500 昭和8 しょうわ8 #T35*500 1933 しょうわ9 #T35*500 昭和9 しょうわ9 #T35*500 1934 たいしょう1 #T35*500 大正1 たいしょう1 #T35*500 1912 たいしょう10 #T35*500 大正10 たいしょう10 #T35*500 1921 たいしょう11 #T35*500 大正11 たいしょう11 #T35*500 1922 たいしょう12 #T35*500 大正12 たいしょう12 #T35*500 1923 たいしょう13 #T35*500 大正13 たいしょう13 #T35*500 1924 たいしょう14 #T35*500 大正14 たいしょう14 #T35*500 1925 たいしょう15 #T35*500 大正15 たいしょう15 #T35*500 1926 たいしょう2 #T35*500 大正2 たいしょう2 #T35*500 1913 たいしょう3 #T35*500 大正3 たいしょう3 #T35*500 1914 たいしょう4 #T35*500 大正4 たいしょう4 #T35*500 1915 たいしょう5 #T35*500 大正5 たいしょう5 #T35*500 1916 たいしょう6 #T35*500 大正6 たいしょう6 #T35*500 1917 たいしょう7 #T35*500 大正7 たいしょう7 #T35*500 1918 たいしょう8 #T35*500 大正8 たいしょう8 #T35*500 1919 たいしょう9 #T35*500 大正9 たいしょう9 #T35*500 1920 へいせい1 #T35*500 平成1 へいせい1 #T35*500 1989 へいせい10 #T35*500 平成10 へいせい10 #T35*500 1998 へいせい11 #T35*500 平成11 へいせい11 #T35*500 1999 へいせい12 #T35*500 平成12 へいせい12 #T35*500 2000 へいせい13 #T35*500 平成13 へいせい13 #T35*500 2001 へいせい14 #T35*500 平成14 へいせい14 #T35*500 2002 へいせい15 #T35*500 平成15 へいせい15 #T35*500 2003 へいせい16 #T35*500 平成16 へいせい16 #T35*500 2004 へいせい17 #T35*500 平成17 へいせい17 #T35*500 2005 へいせい18 #T35*500 平成18 へいせい18 #T35*500 2006 へいせい19 #T35*500 平成19 へいせい19 #T35*500 2007 へいせい2 #T35*500 平成2 へいせい2 #T35*500 1990 へいせい20 #T35*500 平成20 へいせい20 #T35*500 2008 へいせい21 #T35*500 平成21 へいせい21 #T35*500 2009 へいせい22 #T35*500 平成22 へいせい22 #T35*500 2010 へいせい23 #T35*500 平成23 へいせい23 #T35*500 2011 へいせい24 #T35*500 平成24 へいせい24 #T35*500 2012 へいせい25 #T35*500 平成25 へいせい25 #T35*500 2013 へいせい26 #T35*500 平成26 へいせい26 #T35*500 2014 へいせい27 #T35*500 平成27 へいせい27 #T35*500 2015 へいせい28 #T35*500 平成28 へいせい28 #T35*500 2016 へいせい29 #T35*500 平成29 へいせい29 #T35*500 2017 へいせい3 #T35*500 平成3 へいせい3 #T35*500 1991 へいせい30 #T35*500 平成30 へいせい30 #T35*500 2018 へいせい31 #T35*500 平成31 へいせい31 #T35*500 2019 へいせい4 #T35*500 平成4 へいせい4 #T35*500 1992 へいせい5 #T35*500 平成5 へいせい5 #T35*500 1993 へいせい6 #T35*500 平成6 へいせい6 #T35*500 1994 へいせい7 #T35*500 平成7 へいせい7 #T35*500 1995 へいせい8 #T35*500 平成8 へいせい8 #T35*500 1996 へいせい9 #T35*500 平成9 へいせい9 #T35*500 1997 めいじ1 #T35*500 明治1 めいじ1 #T35*500 1868 めいじ10 #T35*500 明治10 めいじ10 #T35*500 1877 めいじ11 #T35*500 明治11 めいじ11 #T35*500 1878 めいじ12 #T35*500 明治12 めいじ12 #T35*500 1879 めいじ13 #T35*500 明治13 めいじ13 #T35*500 1880 めいじ14 #T35*500 明治14 めいじ14 #T35*500 1881 めいじ15 #T35*500 明治15 めいじ15 #T35*500 1882 めいじ16 #T35*500 明治16 めいじ16 #T35*500 1883 めいじ17 #T35*500 明治17 めいじ17 #T35*500 1884 めいじ18 #T35*500 明治18 めいじ18 #T35*500 1885 めいじ19 #T35*500 明治19 めいじ19 #T35*500 1886 めいじ2 #T35*500 明治2 めいじ2 #T35*500 1869 めいじ20 #T35*500 明治20 めいじ20 #T35*500 1887 めいじ21 #T35*500 明治21 めいじ21 #T35*500 1888 めいじ22 #T35*500 明治22 めいじ22 #T35*500 1889 めいじ23 #T35*500 明治23 めいじ23 #T35*500 1890 めいじ24 #T35*500 明治24 めいじ24 #T35*500 1891 めいじ25 #T35*500 明治25 めいじ25 #T35*500 1892 めいじ26 #T35*500 明治26 めいじ26 #T35*500 1893 めいじ27 #T35*500 明治27 めいじ27 #T35*500 1894 めいじ28 #T35*500 明治28 めいじ28 #T35*500 1895 めいじ29 #T35*500 明治29 めいじ29 #T35*500 1896 めいじ3 #T35*500 明治3 めいじ3 #T35*500 1870 めいじ30 #T35*500 明治30 めいじ30 #T35*500 1897 めいじ31 #T35*500 明治31 めいじ31 #T35*500 1898 めいじ32 #T35*500 明治32 めいじ32 #T35*500 1899 めいじ33 #T35*500 明治33 めいじ33 #T35*500 1900 めいじ34 #T35*500 明治34 めいじ34 #T35*500 1901 めいじ35 #T35*500 明治35 めいじ35 #T35*500 1902 めいじ36 #T35*500 明治36 めいじ36 #T35*500 1903 めいじ37 #T35*500 明治37 めいじ37 #T35*500 1904 めいじ38 #T35*500 明治38 めいじ38 #T35*500 1905 めいじ39 #T35*500 明治39 めいじ39 #T35*500 1906 めいじ4 #T35*500 明治4 めいじ4 #T35*500 1871 めいじ40 #T35*500 明治40 めいじ40 #T35*500 1907 めいじ41 #T35*500 明治41 めいじ41 #T35*500 1908 めいじ42 #T35*500 明治42 めいじ42 #T35*500 1909 めいじ43 #T35*500 明治43 めいじ43 #T35*500 1910 めいじ44 #T35*500 明治44 めいじ44 #T35*500 1911 めいじ45 #T35*500 明治45 めいじ45 #T35*500 1912 めいじ5 #T35*500 明治5 めいじ5 #T35*500 1872 めいじ6 #T35*500 明治6 めいじ6 #T35*500 1873 めいじ7 #T35*500 明治7 めいじ7 #T35*500 1874 めいじ8 #T35*500 明治8 めいじ8 #T35*500 1875 めいじ9 #T35*500 明治9 めいじ9 #T35*500 1876 れいわ1 #T35*500 令和1 れいわ1 #T35*500 2019 れいわ2 #T35*500 令和2 れいわ2 #T35*500 2020 れいわ3 #T35*500 令和3 れいわ3 #T35*500 2021 れいわ4 #T35*500 令和4 れいわ4 #T35*500 2022 れいわ5 #T35*500 令和5 れいわ5 #T35*500 2023 れいわ6 #T35*500 令和6 れいわ6 #T35*500 2024 れいわ7 #T35*500 令和7 れいわ7 #T35*500 2025 1868 #T35*500 明治1 1869 #T35*500 明治2 1870 #T35*500 明治3 1871 #T35*500 明治4 1872 #T35*500 明治5 1873 #T35*500 明治6 1874 #T35*500 明治7 1875 #T35*500 明治8 1876 #T35*500 明治9 1877 #T35*500 明治10 1878 #T35*500 明治11 1879 #T35*500 明治12 1880 #T35*500 明治13 1881 #T35*500 明治14 1882 #T35*500 明治15 1883 #T35*500 明治16 1884 #T35*500 明治17 1885 #T35*500 明治18 1886 #T35*500 明治19 1887 #T35*500 明治20 1888 #T35*500 明治21 1889 #T35*500 明治22 1890 #T35*500 明治23 1891 #T35*500 明治24 1892 #T35*500 明治25 1893 #T35*500 明治26 1894 #T35*500 明治27 1895 #T35*500 明治28 1896 #T35*500 明治29 1897 #T35*500 明治30 1898 #T35*500 明治31 1899 #T35*500 明治32 1900 #T35*500 明治33 1901 #T35*500 明治34 1902 #T35*500 明治35 1903 #T35*500 明治36 1904 #T35*500 明治37 1905 #T35*500 明治38 1906 #T35*500 明治39 1907 #T35*500 明治40 1908 #T35*500 明治41 1909 #T35*500 明治42 1910 #T35*500 明治43 1911 #T35*500 明治44 1912 #T35*500 大正1 1912 #T35*500 明治45 1913 #T35*500 大正2 1914 #T35*500 大正3 1915 #T35*500 大正4 1916 #T35*500 大正5 1917 #T35*500 大正6 1918 #T35*500 大正7 1919 #T35*500 大正8 1920 #T35*500 大正9 1921 #T35*500 大正10 1922 #T35*500 大正11 1923 #T35*500 大正12 1924 #T35*500 大正13 1925 #T35*500 大正14 1926 #T35*500 昭和1 1926 #T35*500 大正15 1927 #T35*500 昭和2 1928 #T35*500 昭和3 1929 #T35*500 昭和4 1930 #T35*500 昭和5 1931 #T35*500 昭和6 1932 #T35*500 昭和7 1933 #T35*500 昭和8 1934 #T35*500 昭和9 1935 #T35*500 昭和10 1936 #T35*500 昭和11 1937 #T35*500 昭和12 1938 #T35*500 昭和13 1939 #T35*500 昭和14 1940 #T35*500 昭和15 1941 #T35*500 昭和16 1942 #T35*500 昭和17 1943 #T35*500 昭和18 1944 #T35*500 昭和19 1945 #T35*500 昭和20 1946 #T35*500 昭和21 1947 #T35*500 昭和22 1948 #T35*500 昭和23 1949 #T35*500 昭和24 1950 #T35*500 昭和25 1951 #T35*500 昭和26 1952 #T35*500 昭和27 1953 #T35*500 昭和28 1954 #T35*500 昭和29 1955 #T35*500 昭和30 1956 #T35*500 昭和31 1957 #T35*500 昭和32 1958 #T35*500 昭和33 1959 #T35*500 昭和34 1960 #T35*500 昭和35 1961 #T35*500 昭和36 1962 #T35*500 昭和37 1963 #T35*500 昭和38 1964 #T35*500 昭和39 1965 #T35*500 昭和40 1966 #T35*500 昭和41 1967 #T35*500 昭和42 1968 #T35*500 昭和43 1969 #T35*500 昭和44 1970 #T35*500 昭和45 1971 #T35*500 昭和46 1972 #T35*500 昭和47 1973 #T35*500 昭和48 1974 #T35*500 昭和49 1975 #T35*500 昭和50 1976 #T35*500 昭和51 1977 #T35*500 昭和52 1978 #T35*500 昭和53 1979 #T35*500 昭和54 1980 #T35*500 昭和55 1981 #T35*500 昭和56 1982 #T35*500 昭和57 1983 #T35*500 昭和58 1984 #T35*500 昭和59 1985 #T35*500 昭和60 1986 #T35*500 昭和61 1987 #T35*500 昭和62 1988 #T35*500 昭和63 1989 #T35*500 平成1 1989 #T35*500 昭和64 1990 #T35*500 平成2 1991 #T35*500 平成3 1992 #T35*500 平成4 1993 #T35*500 平成5 1994 #T35*500 平成6 1995 #T35*500 平成7 1996 #T35*500 平成8 1997 #T35*500 平成9 1998 #T35*500 平成10 1999 #T35*500 平成11 2000 #T35*500 平成12 2001 #T35*500 平成13 2002 #T35*500 平成14 2003 #T35*500 平成15 2004 #T35*500 平成16 2005 #T35*500 平成17 2006 #T35*500 平成18 2007 #T35*500 平成19 2008 #T35*500 平成20 2009 #T35*500 平成21 2010 #T35*500 平成22 2011 #T35*500 平成23 2012 #T35*500 平成24 2013 #T35*500 平成25 2014 #T35*500 平成26 2015 #T35*500 平成27 2016 #T35*500 平成28 2017 #T35*500 平成29 2018 #T35*500 平成30 2019 #T35*500 令和1 2019 #T35*500 平成31 2020 #T35*500 令和2 2021 #T35*500 令和3 2022 #T35*500 令和4 2023 #T35*500 令和5 2024 #T35*500 令和6 2025 #T35*500 令和7 ibus-anthy-1.5.17/data/ibus-anthy.appdata.xml.in000066400000000000000000000035451475510605700214450ustar00rootroot00000000000000 org.freedesktop.ibus.engine.anthy GFDL-1.3 GPL-2.0 Anthy Japanese input method https://raw.githubusercontent.com/ibus/ibus-anthy/main/icons/ibus-anthy.png

The Anthy input method is designed for entering Japanese text.

Input methods are typing systems allowing users to input complex languages. They are necessary because these contain too many characters to simply be laid out on a traditional keyboard.

input-method Japanese https://github.com/ibus/ibus/wiki https://github.com/ibus/ibus-anthy/issues https://github.com/ibus/ibus/wiki/FAQ https://translate.fedoraproject.org/projects/ibus/ibus-anthy/

See the upstream release list.

https://github.com/ibus/ibus-anthy/releases
IBus The Anthy input method is designed for entering Japanese text. http://ibus.github.io/images/2.png ibus-anthy tfujiwar_AT_redhat.com
ibus-anthy-1.5.17/data/oldchar.t000066400000000000000000000025731475510605700164230ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2013 Takao Fujiwara # Copyright (c) 2010-2013 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 file was imported from im-dict-ja # im-dict-ja - Japanese word dictionary set for input method # http://github.com/fujiwarat/im-dict-ja # # Typing 'va' can convert 'ヷ' with this dictionary. う゛ぁ #T35*500 ヷ う゛ぃ #T35*500 ヸ う゛ぇ #T35*500 ヹ う゛ぉ #T35*500 ヺ # 〳, 〵and 〴 can be used instead. おなじ #T35*500 〱 おなじ #T35*500 〲 くのじ #T35*500 〱 くのじ #T35*500 〲 くりかえし #T35*500 〱 くりかえし #T35*500 〲 てん #T35*500 〱 てん #T35*500 〲 ibus-anthy-1.5.17/data/org.freedesktop.ibus.engine.anthy.gschema.xml.in000066400000000000000000001424021475510605700260030ustar00rootroot00000000000000 3 Input Mode 0 Typing Mode 0 Conversion Segment Mode true Show Input Mode false Show Typing Mode false Show Segment Mode true Show Dictionary Mode false Show Dictionary Configuration true Show Preferences 0 Period Style 1 Symbol Style 1 Ten Key Mode 0 Behavior on Focus out 0 Behavior on Period ',.、。,.' Trigger Periods 10 Page Size false Half Width Symbol false Half Width Number false Half Width Space true Latin with Shift 'default' Shortcut Type ['@KASUMI_EXEC_FILE@', '@KASUMI_EXEC_BASENAME@'] Dictionary Administration Command ['@KASUMI_EXEC_FILE@', '@KASUMI_EXEC_BASENAME@', '-a'] Add Word Command '@KASUMI_ICON_FILE@' Dictionary configuration icon ['default', 'jp', 'us', 'jp[ctrl:swapcaps]', 'us[ctrl:swapcaps]', 'jp[ctrl:swapcaps,compose:rctrl]', 'us[ctrl:swapcaps,compose:rctrl]', 'jp[japan:kana_lock]', 'jp[japan:nicola_f_bs]', 'jp[japan:nicola_f_bs,ctrl:swapcaps]', 'jp[japan:hztg_escape]', 'jp[japan:hztg_escape,ctrl:swapcaps]' ] Keyboard Layouts 'default' Method { 'default': <{ 'minus' : <'ー'>, 'a' : <'あ'>, 'i' : <'い'>, 'u' : <'う'>, 'e' : <'え'>, 'o' : <'お'>, 'x-a' : <'ぁ'>, 'x-i' : <'ぃ'>, 'x-u' : <'ぅ'>, 'x-e' : <'ぇ'>, 'x-o' : <'ぉ'>, 'l-a' : <'ぁ'>, 'l-i' : <'ぃ'>, 'l-u' : <'ぅ'>, 'l-e' : <'ぇ'>, 'l-o' : <'ぉ'>, 'w-h-a' : <'うぁ'>, 'w-h-i' : <'うぃ'>, 'w-h-e' : <'うぇ'>, 'w-h-o' : <'うぉ'>, 'w-y-a' : <'うゃ'>, 'w-y-u' : <'うゅ'>, 'w-y-o' : <'うょ'>, 'v-a' : <'ヴぁ'>, 'v-i' : <'ヴぃ'>, 'v-u' : <'ヴ'>, 'v-e' : <'ヴぇ'>, 'v-o' : <'ヴぉ'>, 'v-y-a' : <'ヴゃ'>, 'v-y-u' : <'ヴゅ'>, 'v-y-e' : <'ヴぃぇ'>, 'v-y-o' : <'ヴょ'>, 'k-a' : <'か'>, 'k-i' : <'き'>, 'k-u' : <'く'>, 'k-e' : <'け'>, 'k-o' : <'こ'>, 'l-k-a' : <'ヵ'>, 'l-k-e' : <'ヶ'>, 'x-k-a' : <'ヵ'>, 'x-k-e' : <'ヶ'>, 'g-a' : <'が'>, 'g-i' : <'ぎ'>, 'g-u' : <'ぐ'>, 'g-e' : <'げ'>, 'g-o' : <'ご'>, 'k-y-a' : <'きゃ'>, 'k-y-i' : <'きぃ'>, 'k-y-u' : <'きゅ'>, 'k-y-e' : <'きぇ'>, 'k-y-o' : <'きょ'>, 'k-w-a' : <'くぁ'>, 'k-w-i' : <'くぃ'>, 'k-w-u' : <'くぅ'>, 'k-w-e' : <'くぇ'>, 'k-w-o' : <'くぉ'>, 'g-y-a' : <'ぎゃ'>, 'g-y-i' : <'ぎぃ'>, 'g-y-u' : <'ぎゅ'>, 'g-y-e' : <'ぎぇ'>, 'g-y-o' : <'ぎょ'>, 'g-w-a' : <'ぐぁ'>, 'g-w-i' : <'ぐぃ'>, 'g-w-u' : <'ぐぅ'>, 'g-w-e' : <'ぐぇ'>, 'g-w-o' : <'ぐぉ'>, 's-a' : <'さ'>, 's-i' : <'し'>, 's-u' : <'す'>, 's-e' : <'せ'>, 's-o' : <'そ'>, 'z-a' : <'ざ'>, 'z-i' : <'じ'>, 'z-u' : <'ず'>, 'z-e' : <'ぜ'>, 'z-o' : <'ぞ'>, 's-y-a' : <'しゃ'>, 's-y-i' : <'しぃ'>, 's-y-u' : <'しゅ'>, 's-y-e' : <'しぇ'>, 's-y-o' : <'しょ'>, 's-h-a' : <'しゃ'>, 's-h-i' : <'し'>, 's-h-u' : <'しゅ'>, 's-h-e' : <'しぇ'>, 's-h-o' : <'しょ'>, 'z-y-a' : <'じゃ'>, 'z-y-i' : <'じぃ'>, 'z-y-u' : <'じゅ'>, 'z-y-e' : <'じぇ'>, 'z-y-o' : <'じょ'>, 'j-a' : <'じゃ'>, 'j-y-a' : <'じゃ'>, 'j-i' : <'じ'>, 'j-y-i' : <'じぃ'>, 'j-u' : <'じゅ'>, 'j-y-u' : <'じゅ'>, 'j-e' : <'じぇ'>, 'j-y-e' : <'じぇ'>, 'j-o' : <'じょ'>, 'j-y-o' : <'じょ'>, 's-w-i' : <'すぅぃ'>, 's-w-e' : <'すぇ'>, 'z-w-e' : <'ずぇ'>, 't-a' : <'た'>, 't-i' : <'ち'>, 't-u' : <'つ'>, 't-s-u' : <'つ'>, 't-e' : <'て'>, 't-o' : <'と'>, 'd-a' : <'だ'>, 'd-i' : <'ぢ'>, 'd-u' : <'づ'>, 'd-e' : <'で'>, 'd-o' : <'ど'>, 'x-t-u' : <'っ'>, 'x-t-s-u' : <'っ'>, 'l-t-u' : <'っ'>, 'l-t-s-u' : <'っ'>, 't-y-a' : <'ちゃ'>, 't-y-i' : <'ちぃ'>, 't-y-u' : <'ちゅ'>, 't-y-e' : <'ちぇ'>, 't-y-o' : <'ちょ'>, 'c-y-a' : <'ちゃ'>, 'c-y-i' : <'ちぃ'>, 'c-y-u' : <'ちゅ'>, 'c-y-e' : <'ちぇ'>, 'c-y-o' : <'ちょ'>, 'c-h-a' : <'ちゃ'>, 'c-h-i' : <'ち'>, 'c-h-u' : <'ちゅ'>, 'c-h-e' : <'ちぇ'>, 'c-h-o' : <'ちょ'>, 'd-y-a' : <'ぢゃ'>, 'd-y-i' : <'ぢぃ'>, 'd-y-u' : <'ぢゅ'>, 'd-y-e' : <'ぢぇ'>, 'd-y-o' : <'ぢょ'>, 't-s-a' : <'つぁ'>, 't-s-i' : <'つぃ'>, 't-s-e' : <'つぇ'>, 't-s-o' : <'つぉ'>, 't-s-y-a' : <'つゃ'>, 't-s-y-u' : <'つゅ'>, 't-s-y-e' : <'つぃぇ'>, 't-s-y-o' : <'つょ'>, 'd-z-a' : <'づぁ'>, 'd-z-i' : <'づぃ'>, 'd-z-u' : <'づ'>, 'd-z-e' : <'づぇ'>, 'd-z-o' : <'づぉ'>, 'd-z-y-a' : <'づゃ'>, 'd-z-y-u' : <'づゅ'>, 'd-z-y-e' : <'づぃぇ'>, 'd-z-y-o' : <'づょ'>, 't-h-a' : <'てゃ'>, 't-h-i' : <'てぃ'>, 't-h-u' : <'てゅ'>, 't-h-e' : <'てぇ'>, 't-h-o' : <'てょ'>, 't-w-u' : <'とぅ'>, 'd-h-a' : <'でゃ'>, 'd-h-i' : <'でぃ'>, 'd-h-u' : <'でゅ'>, 'd-h-e' : <'でぇ'>, 'd-h-o' : <'でょ'>, 'd-w-u' : <'どぅ'>, 'n-a' : <'な'>, 'n-i' : <'に'>, 'n-u' : <'ぬ'>, 'n-e' : <'ね'>, 'n-o' : <'の'>, 'n-y-a' : <'にゃ'>, 'n-y-i' : <'にぃ'>, 'n-y-u' : <'にゅ'>, 'n-y-e' : <'にぇ'>, 'n-y-o' : <'にょ'>, 'h-a' : <'は'>, 'h-i' : <'ひ'>, 'h-u' : <'ふ'>, 'h-e' : <'へ'>, 'h-o' : <'ほ'>, 'b-a' : <'ば'>, 'b-i' : <'び'>, 'b-u' : <'ぶ'>, 'b-e' : <'べ'>, 'b-o' : <'ぼ'>, 'p-a' : <'ぱ'>, 'p-i' : <'ぴ'>, 'p-u' : <'ぷ'>, 'p-e' : <'ぺ'>, 'p-o' : <'ぽ'>, 'h-y-a' : <'ひゃ'>, 'h-y-i' : <'ひぃ'>, 'h-y-u' : <'ひゅ'>, 'h-y-e' : <'ひぇ'>, 'h-y-o' : <'ひょ'>, 'b-y-a' : <'びゃ'>, 'b-y-i' : <'びぃ'>, 'b-y-u' : <'びゅ'>, 'b-y-e' : <'びぇ'>, 'b-y-o' : <'びょ'>, 'p-y-a' : <'ぴゃ'>, 'p-y-i' : <'ぴぃ'>, 'p-y-u' : <'ぴゅ'>, 'p-y-e' : <'ぴぇ'>, 'p-y-o' : <'ぴょ'>, 'f-a' : <'ふぁ'>, 'f-i' : <'ふぃ'>, 'f-u' : <'ふ'>, 'f-e' : <'ふぇ'>, 'f-o' : <'ふぉ'>, 'f-y-a' : <'ふゃ'>, 'f-y-i' : <'ふぃ'>, 'f-y-u' : <'ふゅ'>, 'f-y-e' : <'ふぇ'>, 'f-y-o' : <'ふょ'>, 'b-w-a' : <'ぶぁ'>, 'b-w-e' : <'ぶぇ'>, 'b-w-o' : <'ぶぉ'>, 'p-w-a' : <'ぷぁ'>, 'p-w-e' : <'ぷぇ'>, 'p-w-o' : <'ぷぉ'>, 'm-a' : <'ま'>, 'm-i' : <'み'>, 'm-u' : <'む'>, 'm-e' : <'め'>, 'm-o' : <'も'>, 'm-y-a' : <'みゃ'>, 'm-y-i' : <'みぃ'>, 'm-y-u' : <'みゅ'>, 'm-y-e' : <'みぇ'>, 'm-y-o' : <'みょ'>, 'y-a' : <'や'>, 'y-i' : <'い'>, 'y-u' : <'ゆ'>, 'y-e' : <'いぇ'>, 'y-o' : <'よ'>, 'l-y-a' : <'ゃ'>, 'l-y-i' : <'ぃ'>, 'l-y-u' : <'ゅ'>, 'l-y-e' : <'ぇ'>, 'l-y-o' : <'ょ'>, 'x-y-a' : <'ゃ'>, 'x-y-i' : <'ぃ'>, 'x-y-u' : <'ゅ'>, 'x-y-e' : <'ぇ'>, 'x-y-o' : <'ょ'>, 'r-a' : <'ら'>, 'r-i' : <'り'>, 'r-u' : <'る'>, 'r-e' : <'れ'>, 'r-o' : <'ろ'>, 'r-y-a' : <'りゃ'>, 'r-y-i' : <'りぃ'>, 'r-y-u' : <'りゅ'>, 'r-y-e' : <'りぇ'>, 'r-y-o' : <'りょ'>, 'w-a' : <'わ'>, 'w-i' : <'うぃ'>, 'w-u' : <'う'>, 'w-e' : <'うぇ'>, 'w-o' : <'を'>, 'l-w-a' : <'ゎ'>, 'x-w-a' : <'ゎ'>, 'n-apostrophe' : <'ん'>, 'n-n' : <'ん'>, 'w-y-i' : <'ゐ'>, 'w-y-e' : <'ゑ'> }> } List 'jp' Method { 'jp': <{ '1' : <'ぬ'>, '2' : <'ふ'>, '3' : <'あ'>, '4' : <'う'>, '5' : <'え'>, '6' : <'お'>, '7' : <'や'>, '8' : <'ゆ'>, '9' : <'よ'>, '0' : <'わ'>, 'minus' : <'ほ'>, 'asciicircum' : <'へ'>, 'q' : <'た'>, 'w' : <'て'>, 'e' : <'い'>, 'r' : <'す'>, 't' : <'か'>, 'y' : <'ん'>, 'u' : <'な'>, 'i' : <'に'>, 'o' : <'ら'>, 'p' : <'せ'>, 'at' : <'゛'>, 'bracketleft' : <'゜'>, 'a' : <'ち'>, 's' : <'と'>, 'd' : <'し'>, 'f' : <'は'>, 'g' : <'き'>, 'h' : <'く'>, 'j' : <'ま'>, 'k' : <'の'>, 'l' : <'り'>, 'semicolon' : <'れ'>, 'colon' : <'け'>, 'bracketright' : <'む'>, 'z' : <'つ'>, 'x' : <'さ'>, 'c' : <'そ'>, 'v' : <'ひ'>, 'b' : <'こ'>, 'n' : <'み'>, 'm' : <'も'>, 'comma' : <'ね'>, 'period' : <'る'>, 'slash' : <'め'>, 'backslash' : <'ろ'>, 'exclam' : <'ぬ'>, 'quotedbl' : <'ふ'>, 'numbersign' : <'ぁ'>, 'dollar' : <'ぅ'>, 'percent' : <'ぇ'>, 'ampersand' : <'ぉ'>, 'apostrophe' : <'ゃ'>, 'parenleft' : <'ゅ'>, 'parenright' : <'ょ'>, 'asciitilde' : <'を'>, 'equal' : <'ゑ'>, 'bar' : <'ー'>, 'largeq' : <'た'>, 'largew' : <'て'>, 'largee' : <'ぃ'>, 'larger' : <'す'>, 'larget' : <'ヵ'>, 'largey' : <'ん'>, 'largeu' : <'な'>, 'largei' : <'に'>, 'largeo' : <'ら'>, 'largep' : <'せ'>, 'grave' : <'゛'>, 'braceleft' : <'「'>, 'largea' : <'ち'>, 'larges' : <'と'>, 'larged' : <'し'>, 'largef' : <'ゎ'>, 'largeg' : <'き'>, 'largeh' : <'く'>, 'largej' : <'ま'>, 'largek' : <'の'>, 'largel' : <'り'>, 'plus' : <'れ'>, 'asterisk' : <'ヶ'>, 'braceright' : <'」'>, 'largez' : <'っ'>, 'largex' : <'さ'>, 'largec' : <'そ'>, 'largev' : <'ゐ'>, 'largeb' : <'こ'>, 'largen' : <'み'>, 'largem' : <'も'>, 'less' : <'、'>, 'greater' : <'。'>, 'question' : <'・'>, 'underscore' : <'ろ'>, 'yen' : <'ー'> }>, 'us': <{ 'grave' : <'ろ'>, '1' : <'ぬ'>, '2' : <'ふ'>, '3' : <'あ'>, '4' : <'う'>, '5' : <'え'>, '6' : <'お'>, '7' : <'や'>, '8' : <'ゆ'>, '9' : <'よ'>, '0' : <'わ'>, 'minus' : <'ほ'>, 'equal' : <'へ'>, 'q' : <'た'>, 'w' : <'て'>, 'e' : <'い'>, 'r' : <'す'>, 't' : <'か'>, 'y' : <'ん'>, 'u' : <'な'>, 'i' : <'に'>, 'o' : <'ら'>, 'p' : <'せ'>, 'bracketleft' : <'゛'>, 'bracketright' : <'゜'>, 'backslash' : <'む'>, 'a' : <'ち'>, 's' : <'と'>, 'd' : <'し'>, 'f' : <'は'>, 'g' : <'き'>, 'h' : <'く'>, 'j' : <'ま'>, 'k' : <'の'>, 'l' : <'り'>, 'semicolon' : <'れ'>, 'apostrophe' : <'け'>, 'z' : <'つ'>, 'x' : <'さ'>, 'c' : <'そ'>, 'v' : <'ひ'>, 'b' : <'こ'>, 'n' : <'み'>, 'm' : <'も'>, 'comma' : <'ね'>, 'period' : <'る'>, 'slash' : <'め'>, 'asciitilde' : <'ろ'>, 'exclam' : <'ぬ'>, 'at' : <'ふ'>, 'numbersign' : <'ぁ'>, 'dollar' : <'ぅ'>, 'percent' : <'ぇ'>, 'asciicircum' : <'ぉ'>, 'ampersand' : <'ゃ'>, 'asterisk' : <'ゅ'>, 'parenleft' : <'ょ'>, 'parenright' : <'を'>, 'underscore' : <'ー'>, 'plus' : <'ゑ'>, 'largeq' : <'た'>, 'largew' : <'て'>, 'largee' : <'ぃ'>, 'larger' : <'す'>, 'larget' : <'ヵ'>, 'largey' : <'ん'>, 'largeu' : <'な'>, 'largei' : <'に'>, 'largeo' : <'ら'>, 'largep' : <'せ'>, 'braceleft' : <'「'>, 'braceright' : <'」'>, 'bar' : <'む'>, 'largea' : <'ち'>, 'larges' : <'と'>, 'larged' : <'し'>, 'largef' : <'ゎ'>, 'largeg' : <'き'>, 'largeh' : <'く'>, 'largej' : <'ま'>, 'largek' : <'の'>, 'largel' : <'り'>, 'colon' : <'れ'>, 'quotedbl' : <'ヶ'>, 'largez' : <'っ'>, 'largex' : <'さ'>, 'largec' : <'そ'>, 'largev' : <'ゐ'>, 'largeb' : <'こ'>, 'largen' : <'み'>, 'largem' : <'も'>, 'less' : <'、'>, 'greater' : <'。'>, 'question' : <'・'> }> } List true Keyboard Layout Mode 0 Keyboard Layout 2 FMV Extension false FMV Extension 'Henkan' Right S 'Muhenkan' Left S 100 T1 75 T2 'base' Method { 'base': <{ 'q' : <['。', '', 'ぁ']>, 'w' : <['か', 'が', 'え']>, 'e' : <['た', 'だ', 'り']>, 'r' : <['こ', 'ご', 'ゃ']>, 't' : <['さ', 'ざ', 'れ']>, 'y' : <['ら', 'よ', 'ぱ']>, 'u' : <['ち', 'に', 'ぢ']>, 'i' : <['く', 'る', 'ぐ']>, 'o' : <['つ', 'ま', 'づ']>, 'p' : <[',', 'ぇ', 'ぴ']>, 'at' : <['、', '', '']>, 'bracketleft' : <['゛', '゜', '']>, 'a' : <['う', '', 'を']>, 's' : <['し', 'じ', 'あ']>, 'd' : <['て', 'で', 'な']>, 'f' : <['け', 'げ', 'ゅ']>, 'g' : <['せ', 'ぜ', 'も']>, 'h' : <['は', 'み', 'ば']>, 'j' : <['と', 'お', 'ど']>, 'k' : <['き', 'の', 'ぎ']>, 'l' : <['い', 'ょ', 'ぽ']>, 'semicolon' : <['ん', 'っ', '']>, 'z' : <['.', '', 'ぅ']>, 'x' : <['ひ', 'び', 'ー']>, 'c' : <['す', 'ず', 'ろ']>, 'v' : <['ふ', 'ぶ', 'や']>, 'b' : <['へ', 'べ', 'ぃ']>, 'n' : <['め', 'ぬ', 'ぷ']>, 'm' : <['そ', 'ゆ', 'ぞ']>, 'comma' : <['ね', 'む', 'ぺ']>, 'period' : <['ほ', 'わ', 'ぼ']>, 'slash' : <['・', 'ぉ', '']>, '1' : <['1', '', '?']>, '2' : <['2', '', '/']>, '4' : <['4', '', '「']>, '5' : <['5', '', '」']>, '6' : <['6', '[', '']>, '7' : <['7', ']', '']>, '8' : <['8', '(', '']>, '9' : <['9', ')', '']>, 'backslash' : <['¥', '', '']> }>, 'nicola-j-table': <{ 'colon' : <[':', '', '']>, 'at' : <['、', '', '']>, 'bracketleft' : <['゛', '゜', '']>, 'bracketright' : <['」', '', '']>, '8' : <['8', '(', '']>, '9' : <['9', ')', '']>, '0' : <['0', '', '']> }>, 'nicola-a-table': <{ 'colon' : <[':', '', '']>, 'at' : <['@', '', '']>, 'bracketleft' : <['、', '', '']>, 'bracketright' : <['゛', '゜', '']>, '8' : <['8', '', '']>, '9' : <['9', '(', '']>, '0' : <['0', ')', '']> }>, 'nicola-f-table': <{ 'colon' : <['、', '', '']>, 'at' : <['@', '', '']>, 'bracketleft' : <['゛', '゜', '']>, 'bracketright' : <['」', '', '']>, '8' : <['8', '(', '']>, '9' : <['9', ')', '']>, '0' : <['0', '', '']> }>, 'kb231-j-fmv-table': <{ '3' : <['3', '', '~']>, '0' : <['0', '『', '']>, 'minus' : <['-', '』', '']>, 'equal' : <['=', '', '']> }>, 'kb231-a-fmv-table': <{ '3' : <['3', '', '~']>, '0' : <['0', ')', '']>, 'minus' : <['-', '『', '']>, 'equal' : <['=', '』', '']> }>, 'kb231-f-fmv-table': <{ '3' : <['3', '', '~']>, '0' : <['0', '『', '']>, 'minus' : <['-', '』', '']>, 'equal' : <['=', '', '']> }>, 'kb611-j-fmv-table': <{ 'grave' : <['‘', '', '']>, 'asciicircum' : <['々', '£', '']>, 'colon' : <[':', '', '']>, 'at' : <['、', '¢', '']>, 'bracketleft' : <['゛', '゜', '']>, 'backslash' : <['¥', '¦', '']> }>, 'kb611-a-fmv-table': <{ 'grave' : <['々', '', '£']>, 'colon' : <[':', '', '']>, 'at' : <['@', '', '']>, 'bracketleft' : <['、', '¢', '']>, 'backslash' : <['¥', '¦', '']> }>, 'kb611-f-fmv-table': <{ 'grave' : <['‘', '', '']>, 'asciicircum' : <['々', '£', '']>, 'colon' : <['、', '¢', '']>, 'at' : <['@', '', '']>, 'bracketleft' : <['゛', '゜', '']>, 'backslash' : <['¥', '¦', '']> }> } List <('template', '', '', '', false, 300, false, true, false, 'utf-8')> Template Dictionary [ <('embedded', '般', 'General', '', true, 0, true, true, false, 'utf-8')>, <('zipcode', '〒', 'Zip Code Conversion', '', true, -1, false, true, false, 'utf-8')>, <('symbol', '記', 'Symbol', '', true, -1, true, false, false, 'utf-8')>, <('oldchar', '旧', 'Old Character Style', '', true, -1, false, true, false, 'utf-8')>, <('era', '年', 'Era', '', true, -1, false, true, false, 'utf-8')>, <('emoji', '😊', 'Emoji', '', true, -1, false, true, false, 'utf-8')> ] Lists { 'oldchar': <['@pkgdatadir@/dicts/oldchar.t']>, 'era': <['@pkgdatadir@/dicts/era.t']>, 'zipcode': <['@pkgdatadir@/dicts/zipcode.t']>, 'symbol': <['@pkgdatadir@/dicts/symbol.t']>, 'emoji': <['@pkgdatadir@/dicts/emoji.t']> } Files [] Order { 'on_off': <[@ON_OFF_KEYS@]>, 'circle_input_mode': <['Ctrl+comma', 'Ctrl+less']>, 'circle_kana_mode': <['Ctrl+greater']>, 'circle_typing_method': <['Alt+Romaji', 'Ctrl+slash']>, 'circle_dict_method': <['Alt+Henkan']>, 'insert_space': <['space']>, 'insert_alternate_space': <['Shift+space']>, 'backspace': <['BackSpace', 'Ctrl+H']>, 'delete': <['Delete', 'Ctrl+D']>, 'commit': <['Return', 'KP_Enter', 'Ctrl+J', 'Ctrl+M']>, 'convert': <['space', 'KP_Space', 'Henkan']>, 'predict': <['Tab', 'ISO_Left_Tab']>, 'cancel': <['Escape', 'Ctrl+G']>, 'reconvert': <['Shift+Henkan']>, 'move_caret_first': <['Ctrl+A', 'Home']>, 'move_caret_last': <['Ctrl+E', 'End']>, 'move_caret_forward': <['Right', 'Ctrl+F']>, 'move_caret_backward': <['Left', 'Ctrl+B']>, 'select_first_segment': <['Ctrl+A', 'Home']>, 'select_last_segment': <['Ctrl+E', 'End']>, 'select_next_segment': <['Right', 'Ctrl+F']>, 'select_prev_segment': <['Left', 'Ctrl+B']>, 'shrink_segment': <['Shift+Left', 'Ctrl+I']>, 'expand_segment': <['Shift+Right', 'Ctrl+O']>, 'commit_first_segment': <['Shift+Down']>, 'commit_selected_segment': <['Ctrl+Down']>, 'select_first_candidate': <['Home']>, 'select_last_candidate': <['End']>, 'select_next_candidate': <['space', 'KP_Space', 'Tab', 'ISO_Left_Tab', 'Henkan', 'Down', 'KP_Add', 'Ctrl+N']>, 'select_prev_candidate': <['Shift+Tab', 'Shift+ISO_Left_Tab', 'Up', 'KP_Subtract', 'Ctrl+P']>, 'candidates_page_up': <['Page_Up']>, 'candidates_page_down': <['Page_Down', 'KP_Tab']>, 'select_candidates_1': <['1']>, 'select_candidates_2': <['2']>, 'select_candidates_3': <['3']>, 'select_candidates_4': <['4']>, 'select_candidates_5': <['5']>, 'select_candidates_6': <['6']>, 'select_candidates_7': <['7']>, 'select_candidates_8': <['8']>, 'select_candidates_9': <['9']>, 'select_candidates_0': <['0']>, 'convert_to_char_type_forward': <['Muhenkan']>, 'convert_to_hiragana': <['F6']>, 'convert_to_katakana': <['F7']>, 'convert_to_half': <['F8']>, 'convert_to_half_katakana': <['Shift+F8']>, 'convert_to_wide_latin': <['F9']>, 'convert_to_latin': <['F10']>, 'convert_to_hiragana_all': <['Shift+F6']>, 'convert_to_katakana_all': <['Shift+F7']>, 'convert_to_wide_latin_all': <['Shift+F9']>, 'convert_to_latin_all': <['Shift+F10']>, 'dict_admin': <['F11']>, 'add_word': <['F12']>, 'hiragana_for_latin_with_shift': <['Hiragana_Katakana']> } Default { 'on_off': <['Henkan', 'Eisu_toggle', 'Zenkaku_Hankaku']>, 'circle_input_mode': <['F10']>, 'hiragana_mode': <['Hiragana_Katakana']>, 'katakana_mode': <['Shift+Hiragana_Katakana']>, 'circle_typing_method': <['Romaji', 'Alt+Romaji']>, 'circle_dict_method': <['Alt+Henkan']>, 'convert': <['space', 'Henkan', 'Shift+space', 'Shift+Henkan']>, 'predict': <['Tab']>, 'cancel': <['Escape', 'BackSpace', 'Ctrl+H', 'Ctrl+bracketleft']>, 'commit': <['Return', 'Ctrl+M']>, 'reconvert': <['Shift+Henkan']>, 'insert_space': <['space']>, 'insert_alternate_space': <['Shift+space']>, 'backspace': <['BackSpace', 'Ctrl+H']>, 'delete': <['Delete', 'Ctrl+G']>, 'move_caret_backward': <['Left', 'Ctrl+K']>, 'move_caret_forward': <['Right', 'Ctrl+L']>, 'move_caret_first': <['Ctrl+Left']>, 'move_caret_last': <['Ctrl+Right']>, 'select_prev_segment': <['Shift+Left']>, 'select_next_segment': <['Shift+Right']>, 'select_first_segment': <['Ctrl+Left']>, 'select_last_segment': <['Ctrl+Right']>, 'expand_segment': <['Right', 'Ctrl+L']>, 'shrink_segment': <['Left', 'Ctrl+K']>, 'commit_selected_segment': <['Down', 'Ctrl+N']>, 'candidates_page_up': <['Shift+Henkan', 'Page_Up']>, 'candidates_page_down': <['Henkan', 'Page_Down']>, 'select_next_candidate': <['space', 'Tab', 'Henkan', 'Shift+space', 'Shift+Henkan']>, 'select_prev_candidate': <['Up']>, 'select_candidates_1': <['1']>, 'select_candidates_2': <['2']>, 'select_candidates_3': <['3']>, 'select_candidates_4': <['4']>, 'select_candidates_5': <['5']>, 'select_candidates_6': <['6']>, 'select_candidates_7': <['7']>, 'select_candidates_8': <['8']>, 'select_candidates_9': <['9']>, 'select_candidates_0': <['0']>, 'convert_to_hiragana': <['F6', 'Ctrl+U']>, 'convert_to_katakana': <['F7', 'Ctrl+I']>, 'convert_to_half': <['F8', 'Ctrl+O']>, 'convert_to_half_katakana': <['Shift+F8']>, 'convert_to_wide_latin': <['F9', 'Ctrl+P']>, 'convert_to_latin': <['F10', 'Ctrl+at']>, 'convert_to_hiragana_all': <['Shift+F6']>, 'convert_to_katakana_all': <['Shift+F7']>, 'convert_to_wide_latin_all': <['Shift+F9']>, 'convert_to_latin_all': <['Shift+F10']>, 'dict_admin': <['F11']>, 'add_word': <['Ctrl+F7']>, 'hiragana_for_latin_with_shift': <['Ctrl+J']> } ATOK { 'on_off': <['Shift+space']>, 'convert': <['space']>, 'predict': <['Ctrl+Q']>, 'cancel': <['Escape', 'Ctrl+G', 'Alt+Down', 'Muhenkan']>, 'commit': <['Ctrl+L', 'Ctrl+M', 'Ctrl+J', 'Return']>, 'insert_space': <['space']>, 'backspace': <['Ctrl+H', 'BackSpace']>, 'delete': <['Ctrl+D', 'Delete']>, 'circle_dict_method': <['Alt+Henkan']>, 'move_caret_backward': <['Ctrl+B', 'Left']>, 'move_caret_forward': <['Ctrl+F', 'Right']>, 'move_caret_first': <['Ctrl+A', 'Alt+Left']>, 'move_caret_last': <['Ctrl+E', 'Alt+Right']>, 'select_prev_segment': <['Ctrl+B', 'Left']>, 'select_next_segment': <['Ctrl+F', 'Right']>, 'select_first_segment': <['Ctrl+A', 'Alt+Left']>, 'select_last_segment': <['Ctrl+E', 'Alt+Right']>, 'expand_segment': <['Ctrl+O', 'F14']>, 'shrink_segment': <['Ctrl+I', 'F13']>, 'candidates_page_up': <['Tab']>, 'candidates_page_down': <['Shift+Tab']>, 'select_next_candidate': <['space', 'Ctrl+Q', 'Ctrl+P', 'Down']>, 'select_prev_candidate': <['Ctrl+N', 'Up']>, 'select_candidates_1': <['1']>, 'select_candidates_2': <['2']>, 'select_candidates_3': <['3']>, 'select_candidates_4': <['4']>, 'select_candidates_5': <['5']>, 'select_candidates_6': <['6']>, 'select_candidates_7': <['7']>, 'select_candidates_8': <['8']>, 'select_candidates_9': <['9']>, 'select_candidates_0': <['0']>, 'convert_to_hiragana': <['F6']>, 'convert_to_katakana': <['F7']>, 'convert_to_half': <['F8']>, 'convert_to_wide_latin': <['F9']>, 'convert_to_latin': <['F10']>, 'convert_to_hiragana_all': <['Shift+F6']>, 'convert_to_katakana_all': <['Shift+F7']>, 'convert_to_half_all': <['Shift+F8']>, 'convert_to_wide_latin_all': <['Shift+F9']>, 'convert_to_latin_all': <['Shift+F10']>, 'dict_admin': <['F11']>, 'add_word': <['F12']>, 'hiragana_for_latin_with_shift': <['Hiragana_Katakana']> } WNN ibus-anthy-1.5.17/data/symbol.t000066400000000000000000000407771475510605700163240ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2016 Takao Fujiwara # Copyright (c) 2010-2016 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 file was imported from im-dict-ja # im-dict-ja - Japanese word dictionary set for input method # http://github.com/fujiwarat/im-dict-ja あっとまーく #T35*0 @ いちのじ #T35*0 ゝ いちのじ #T35*0 ゞ いちのじ #T35*0 ヽ いちのじ #T35*0 ヾ いてざ #T35*0 ♐ うおざ #T35*0 ♓ えもじ #T35*0 〄 えもじ #T35*0 ☎ えもじ #T35*0 〠 えん #T35*0 ¥ えんざん #T35*0 ± えんざん #T35*0 X えんざん #T35*0 ÷ えんざん #T35*0 * えんざん #T35*0 ≠ えんざん #T35*0 ≦ えんざん #T35*0 ≧ えんざん #T35*0 ∞ えんざん #T35*0 ∴ えんざん #T35*0 ∵ えんざん #T35*0 < えんざん #T35*0 > えんざん #T35*0 = えんざん #T35*0 − えんざん #T35*0 + えんざん #T35*0 ≒ えんざん #T35*0 ≡ えんざん #T35*0 ≪ えんざん #T35*0 ≫ えんざん #T35*0 ∽ えんざん #T35*0 ∈ えんざん #T35*0 ∋ えんざん #T35*0 ⊆ えんざん #T35*0 ⊇ えんざん #T35*0 ⊂ えんざん #T35*0 ⊃ えんざん #T35*0 ∪ えんざん #T35*0 ∩ えんざん #T35*0 ∧ えんざん #T35*0 ∨ えんざん #T35*0 ¬ えんざん #T35*0 ⇒ えんざん #T35*0 ⇔ えんざん #T35*0 ∀ えんざん #T35*0 ∃ えんざん #T35*0 ∠ えんざん #T35*0 ⊥ えんざん #T35*0 ⌒ えんざん #T35*0 ∂ えんざん #T35*0 ∇ えんざん #T35*0 √ えんざん #T35*0 ∫ えんざん #T35*0 ∬ おうしざ #T35*0 ♉ おとめざ #T35*0 ♍ おひつじざ #T35*0 ♈ おんぷ #T35*0 ♪ おんぷ #T35*0 𝄞 おんぷ #T35*0 𝄢 おんぷ #T35*0 𝄻 おんぷ #T35*0 𝄼 おんぷ #T35*0 𝄽 おんぷ #T35*0 𝄾 おんぷ #T35*0 🎵 おんぷ #T35*0 🎶 かっこ #T35*0 「 かっこ #T35*0 」 かっこ #T35*0 『 かっこ #T35*0 』 かっこ #T35*0 〈 かっこ #T35*0 〉 かっこ #T35*0 《 かっこ #T35*0 》 かっこ #T35*0 〔 かっこ #T35*0 〕 かっこ #T35*0 [ かっこ #T35*0 ] かっこ #T35*0 【 かっこ #T35*0 】 かっこ #T35*0 ( かっこ #T35*0 ) かっこ #T35*0 { かっこ #T35*0 } かっこ #T35*0 ‘ かっこ #T35*0 ’ かっこ #T35*0 “ かっこ #T35*0 ” かっこ #T35*0 〝 かっこ #T35*0 〟 かっこすうじ #T35*0 ⑴ かっこすうじ #T35*0 ⑵ かっこすうじ #T35*0 ⑶ かっこすうじ #T35*0 ⑷ かっこすうじ #T35*0 ⑸ かっこすうじ #T35*0 ⑹ かっこすうじ #T35*0 ⑺ かっこすうじ #T35*0 ⑻ かっこすうじ #T35*0 ⑼ かっこすうじ #T35*0 ⑽ かっこすうじ #T35*0 ⒂ かっこすうじ #T35*0 ⒇ かっころーまじ #T35*0 ⒜ かっころーまじ #T35*0 ⒝ かっころーまじ #T35*0 ⒞ かっころーまじ #T35*0 ⒟ かっころーまじ #T35*0 ⒠ かっころーまじ #T35*0 ⒡ かっころーまじ #T35*0 ⒢ かっころーまじ #T35*0 ⒣ かっころーまじ #T35*0 ⒤ かっころーまじ #T35*0 ⒥ かっころーまじ #T35*0 ⒦ かっころーまじ #T35*0 ⒧ かっころーまじ #T35*0 ⒨ かっころーまじ #T35*0 ⒩ かっころーまじ #T35*0 ⒪ かっころーまじ #T35*0 ⒫ かっころーまじ #T35*0 ⒬ かっころーまじ #T35*0 ⒭ かっころーまじ #T35*0 ⒮ かっころーまじ #T35*0 ⒯ かっころーまじ #T35*0 ⒰ かっころーまじ #T35*0 ⒱ かっころーまじ #T35*0 ⒲ かっころーまじ #T35*0 ⒳ かっころーまじ #T35*0 ⒴ かっころーまじ #T35*0 ⒵ かにざ #T35*0 ♋ かぶしきがいしゃ #T35*0 ㍿ かぶしきがいしゃ #T35*0 ㈱ かぶしきがいしゃ #T35*0 ㏍ きごう #T35*0 © きごう #T35*0 ® きごう #T35*0 ℗ きごう #T35*0 ℠ きごう #T35*0 ™ きごう #T35*0 ⁈ きごう #T35*0 ⁉ きごう #T35*0 ⁇ きごう #T35*0 ‼ きゅうかな #T35*0 ゐ きゅうかな #T35*0 ヰ きゅうかな #T35*0 ヸ きゅうかな #T35*0 ゑ きゅうかな #T35*0 ヱ きゅうかな #T35*0 ヹ きゅうかな #T35*0 ヺ きゅうかな #T35*0 ゔ きゅうかな #T35*0 ヷ きゅうかな #T35*0 ヴ きろ #T35*0 ㎞ きろ #T35*0 ㎏ きろ #T35*0 ㎅ きろ #T35*0 ㌔ きろ #T35*0 ㌖ きろ #T35*0 ㌕ きろぐらむ #T35*0 ㎏ きろぐらむ #T35*0 ㌕ くのじ #T35*0 〳 くのじ #T35*0 〵 くのじ #T35*0 〴 ぐらむ #T35*0 g ぐらむ #T35*0 ㌘ けいけい #T35*0 ㏍ けいせん #T35*0 ─ けいせん #T35*0 │ けいせん #T35*0 ┌ けいせん #T35*0 ┐ けいせん #T35*0 ┘ けいせん #T35*0 └ けいせん #T35*0 ├ けいせん #T35*0 ┬ けいせん #T35*0 ┤ けいせん #T35*0 ┴ けいせん #T35*0 ┼ けいせん #T35*0 ━ けいせん #T35*0 ┃ けいせん #T35*0 ┏ けいせん #T35*0 ┓ けいせん #T35*0 ┛ けいせん #T35*0 ┗ けいせん #T35*0 ┣ けいせん #T35*0 ┳ けいせん #T35*0 ┫ けいせん #T35*0 ┻ けいせん #T35*0 ╋ けいせん #T35*0  ̄ けいせん #T35*0 ︳ けいせん #T35*0 ー けいせん #T35*0 ︱ こと #T35*0 ヿ こぴーらいと #T35*0 © こぴーらいと #T35*0 ℗ こめ #T35*0 ※ さそりざ #T35*0 ♏ さんかく #T35*0 ▲ さんかく #T35*0 △ さんかく #T35*0 ▼ さんかく #T35*0 ▽ さーびすまーく #T35*0 ℠ しかく #T35*0 □ しかく #T35*0 ■ しかく #T35*0 ◇ しかく #T35*0 ◆ ししざ #T35*0 ♌ しゃーぷ #T35*0 ♯ しょうひょう #T35*0 © しょうひょう #T35*0 ℗ しょうりゃくもじ #T35*0 № しょうりゃくもじ #T35*0 ㏍ しょうりゃくもじ #T35*0 ℡ しょうりゃくもじ #T35*0 ㍿ しょうりゃくもじ #T35*0 ㌀ しょうりゃくもじ #T35*0 ㌞ しょうりゃくもじ #T35*0 ㌪ しょうりゃくもじ #T35*0 ㌱ しょうりゃくもじ #T35*0 ㍇ しょうりゃくもじ #T35*0 ㈰ しょうりゃくもじ #T35*0 ㈪ しょうりゃくもじ #T35*0 ㈫ しょうりゃくもじ #T35*0 ㈬ しょうりゃくもじ #T35*0 ㈭ しょうりゃくもじ #T35*0 ㈮ しょうりゃくもじ #T35*0 ㈯ しょうりゃくもじ #T35*0 ㉀ しょうりゃくもじ #T35*0 ㈷ しょうりゃくもじ #T35*0 ㉂ しょうりゃくもじ #T35*0 ㉃ しょうりゃくもじ #T35*0 ㈹ しょうりゃくもじ #T35*0 ㈺ しょうりゃくもじ #T35*0 ㈱ しょうりゃくもじ #T35*0 ㈾ しょうりゃくもじ #T35*0 ㈴ しょうりゃくもじ #T35*0 ㈲ しょうりゃくもじ #T35*0 ㈻ しょうりゃくもじ #T35*0 ㈶ しょうりゃくもじ #T35*0 ㈳ しょうりゃくもじ #T35*0 ㈵ しょうりゃくもじ #T35*0 ㈼ しょうりゃくもじ #T35*0 ㈽ しょうりゃくもじ #T35*0 ㈿ しょうりゃくもじ #T35*0 ㈸ しょうりゃくもじ #T35*0 ㊤ しょうりゃくもじ #T35*0 ㊥ しょうりゃくもじ #T35*0 ㊦ しょうりゃくもじ #T35*0 ㊧ しょうりゃくもじ #T35*0 ㊨ しょうりゃくもじ #T35*0 ㊩ しょうりゃくもじ #T35*0 ㊖ しょうりゃくもじ #T35*0 ㊝ しょうりゃくもじ #T35*0 ㊘ しょうりゃくもじ #T35*0 ㊞ しょうりゃくもじ #T35*0 ㊙ しょうりゃくもじ #T35*0 @ しょうりゃくもじ #T35*0 © しょうりゃくもじ #T35*0 ® しょうりゃくもじ #T35*0 ℗ しょうりゃくもじ #T35*0 ℠ しょうりゃくもじ #T35*0 ™ しょうわ #T35*0 ㍼ じす #T35*0 〄 すうがく #T35*0 + すうがく #T35*0 − すうがく #T35*0 ± すうがく #T35*0 X すうがく #T35*0 ÷ すうがく #T35*0 * すうがく #T35*0 = すうがく #T35*0 ≠ すうがく #T35*0 ≒ すうがく #T35*0 ≡ すうがく #T35*0 < すうがく #T35*0 > すうがく #T35*0 ≦ すうがく #T35*0 ≧ すうがく #T35*0 ≪ すうがく #T35*0 ≫ すうがく #T35*0 ∞ すうがく #T35*0 ∽ すうがく #T35*0 ∝ すうがく #T35*0 ∴ すうがく #T35*0 ∵ すうがく #T35*0 ∈ すうがく #T35*0 ∋ すうがく #T35*0 ⊆ すうがく #T35*0 ⊇ すうがく #T35*0 ⊂ すうがく #T35*0 ⊃ すうがく #T35*0 ∪ すうがく #T35*0 ∩ すうがく #T35*0 ∧ すうがく #T35*0 ∨ すうがく #T35*0 ¬ すうがく #T35*0 ⇒ すうがく #T35*0 ⇔ すうがく #T35*0 ∀ すうがく #T35*0 ∃ すうがく #T35*0 ∠ すうがく #T35*0 ⊥ すうがく #T35*0 ⌒ すうがく #T35*0 ∂ すうがく #T35*0 ∇ すうがく #T35*0 √ すうがく #T35*0 ∫ すうがく #T35*0 ∬ すうがく #T35*0 ∮ すうがく #T35*0 ∟ すうがく #T35*0 ⊿ せいざ #T35*0 ♈ せいざ #T35*0 ♉ せいざ #T35*0 ♊ せいざ #T35*0 ♋ せいざ #T35*0 ♌ せいざ #T35*0 ♍ せいざ #T35*0 ♎ せいざ #T35*0 ♏ せいざ #T35*0 ♐ せいざ #T35*0 ♑ せいざ #T35*0 ♒ せいざ #T35*0 ♓ せくしょん #T35*0 § せんち #T35*0 ㎝ せんち #T35*0 ㌢ せんと #T35*0 ¢ せんと #T35*0 ㌣ たいしょう #T35*0 ㍽ たてかな #T35*0 ぁ たてかな #T35*0 ぃ たてかな #T35*0 ぅ たてかな #T35*0 ぇ たてかな #T35*0 ぉ たてかな #T35*0 っ たてかな #T35*0 ゃ たてかな #T35*0 ゅ たてかな #T35*0 ょ たてかな #T35*0 ゎ たてかな #T35*0 ァ たてかな #T35*0 ィ たてかな #T35*0 ゥ たてかな #T35*0 ェ たてかな #T35*0 ォ たてかな #T35*0 ッ たてかな #T35*0 ャ たてかな #T35*0 ュ たてかな #T35*0 ョ たてかな #T35*0 ヮ たてかな #T35*0 ヵ たてかな #T35*0 ヶ たてきごう #T35*0 ‐ たてきごう #T35*0 〜 たてきごう #T35*0 ‖ たてきごう #T35*0 | たてきごう #T35*0 ︰ たてきごう #T35*0 ︵ たてきごう #T35*0 ︶ たてきごう #T35*0 ︹ たてきごう #T35*0 ︺ たてきごう #T35*0 [ たてきごう #T35*0 ] たてきごう #T35*0 ︷ たてきごう #T35*0 ︸ たてきごう #T35*0 ︿ たてきごう #T35*0 ﹀ たてきごう #T35*0 ︽ たてきごう #T35*0 ︾ たてきごう #T35*0 ﹁ たてきごう #T35*0 ﹂ たてきごう #T35*0 ﹃ たてきごう #T35*0 ﹄ たてきごう #T35*0 ︻ たてきごう #T35*0 ︼ たてきごう #T35*0 = たてぼう #T35*0 ‖ たてぼう #T35*0 | たてぼう #T35*0 \ たてぼう #T35*0 / たんい #T35*0 ¥ たんい #T35*0 $ たんい #T35*0 ¢ たんい #T35*0 £ たんい #T35*0 % たんい #T35*0 ‰ たんい #T35*0 ㎜ たんい #T35*0 ㎟ たんい #T35*0 ㎝ たんい #T35*0 ㎠ たんい #T35*0 ㎤ たんい #T35*0 m たんい #T35*0 ㎡ たんい #T35*0 ㎥ たんい #T35*0 ㎞ たんい #T35*0 ㎢ たんい #T35*0 ㎎ たんい #T35*0 g たんい #T35*0 ㎏ たんい #T35*0 ㏄ たんい #T35*0 ㎖ たんい #T35*0 ㎗ たんい #T35*0 ℓ たんい #T35*0 ㎘ たんい #T35*0 ㎳ たんい #T35*0 ㎲ たんい #T35*0 ㎱ たんい #T35*0 ㎰ たんい #T35*0 ℃ たんい #T35*0 ℉ たんい #T35*0 ㏔ たんい #T35*0 ㏋ たんい #T35*0 ㎐ たんい #T35*0 ㎅ たんい #T35*0 ㎆ たんい #T35*0 ㎇ たんい #T35*0 TB たんい #T35*0 ㍉ たんい #T35*0 ㌢ たんい #T35*0 ㍍ たんい #T35*0 ㌔ たんい #T35*0 ㌖ たんい #T35*0 ㌅ たんい #T35*0 ㌳ たんい #T35*0 ㍎ たんい #T35*0 ㌃ たんい #T35*0 ㌶ たんい #T35*0 ㌘ たんい #T35*0 ㌕ たんい #T35*0 ㌧ たんい #T35*0 ㍑ たんい #T35*0 ㍊ たんい #T35*0 ㌹ たんい #T35*0 ㍗ たんい #T35*0 ㌍ たんい #T35*0 ㍂ たんい #T35*0 ㌣ たんい #T35*0 ㌦ たんい #T35*0 ㌻ たんい #T35*0 ㌫ だくてん #T35*0 ゙ ちぇっくぼたん #T35*0 ☐ ちぇっくぼたん #T35*0 ☑ ちぇっくぼたん #T35*0 ☒ ちぇっくぼっくす #T35*0 ☐ ちぇっくぼっくす #T35*0 ☑ ちぇっくぼっくす #T35*0 ☒ てん #T35*0 、 てん #T35*0 。 てん #T35*0 , てん #T35*0 . てん #T35*0 ・ てん #T35*0 : てん #T35*0 ; てん #T35*0 ? てん #T35*0 ! てん #T35*0 … てん #T35*0 ‥ てん #T35*0 ゛ てん #T35*0 ゜ てん #T35*0 ´ てん #T35*0 ` てん #T35*0 ¨ てん #T35*0 ^ てん #T35*0 ° てん #T35*0 ′ てん #T35*0 ″ てん #T35*0 ヽ てん #T35*0 ヾ てん #T35*0 ゝ てん #T35*0 ゞ てん #T35*0 〃 てん #T35*0 〟 てん #T35*0 〻 てん #T35*0 〳 てん #T35*0 〵 てん #T35*0 〴 てんすうじ #T35*0 ⒈ てんすうじ #T35*0 ⒉ てんすうじ #T35*0 ⒊ てんすうじ #T35*0 ⒋ てんすうじ #T35*0 ⒌ てんすうじ #T35*0 ⒍ てんすうじ #T35*0 ⒎ てんすうじ #T35*0 ⒏ てんすうじ #T35*0 ⒐ てんびんざ #T35*0 ♎ でんわ #T35*0 ℡ でんわ #T35*0 ☎ とらんぷ #T35*0 ♤ とらんぷ #T35*0 ♧ とらんぷ #T35*0 ♡ とらんぷ #T35*0 ♢ とらんぷ #T35*0 ♠ とらんぷ #T35*0 ♣ とらんぷ #T35*0 ♥ とらんぷ #T35*0 ♦ とれーどまーく #T35*0 ™ とん #T35*0 ㌧ ど #T35*0 ℃ ど #T35*0 ° ど #T35*0 ℉ どうのじ #T35*0 々 どる #T35*0 $ どる #T35*0 ㌦ なぜなら #T35*0 ∵ なんばー #T35*0 No ねんごう #T35*0 ㍾ ねんごう #T35*0 ㍽ ねんごう #T35*0 ㍼ ねんごう #T35*0 ㍻ ののじ #T35*0 〃 はんだくてん #T35*0 ゚ ぱーせんと #T35*0 ㌫ ぱーせんと #T35*0 % ぱーみる #T35*0 ‰ びだくおん #T35*0 ゚ びだくおん #T35*0 ゜ びだくおん #T35*0 ŋ びだくおん #T35*0 g̃ ふたござ #T35*0 ♊ ふらっと #T35*0 ♭ へいせい #T35*0 ㍻ へいほうきろ #T35*0 ㎢ へいほうせんち #T35*0 ㎠ へいほうみり #T35*0 ㎟ へいほうめーとる #T35*0 ㎡ ほし #T35*0 ★ ほし #T35*0 ☆ ほし #T35*0 ※ ぼたん #T35*0 ☐ ぼたん #T35*0 ☑ ぼたん #T35*0 ☒ ぽんど #T35*0 £ まる #T35*0 ◯ まる #T35*0 ● まる #T35*0 ◎ まる #T35*0 〇 まる #T35*0 ○ まるもじ #T35*0 ① まるもじ #T35*0 ② まるもじ #T35*0 ③ まるもじ #T35*0 ④ まるもじ #T35*0 ⑤ まるもじ #T35*0 ⑥ まるもじ #T35*0 ⑦ まるもじ #T35*0 ⑧ まるもじ #T35*0 ⑨ まるもじ #T35*0 ⑩ まるもじ #T35*0 ⑪ まるもじ #T35*0 ⑫ まるもじ #T35*0 ⑬ まるもじ #T35*0 ⑭ まるもじ #T35*0 ⑮ まるもじ #T35*0 ⑯ まるもじ #T35*0 ⑰ まるもじ #T35*0 ⑱ まるもじ #T35*0 ⑲ まるもじ #T35*0 ⑳ まるもじ #T35*0 ❶ まるもじ #T35*0 ❷ まるもじ #T35*0 ❸ まるもじ #T35*0 ❹ まるもじ #T35*0 ❺ まるもじ #T35*0 ❻ まるもじ #T35*0 ❼ まるもじ #T35*0 ❽ まるもじ #T35*0 ❾ みぎさんかく #T35*0 ⊿ みずがめざ #T35*0 ♒ みり #T35*0 ㎜ みり #T35*0 ㍉ みりぐらむ #T35*0 ㎎ めいじ #T35*0 ㍾ めーとる #T35*0 m めーとる #T35*0 ㍍ やぎざ #T35*0 ♑ やじるし #T35*0 → やじるし #T35*0 ← やじるし #T35*0 ↑ やじるし #T35*0 ↓ やじるし #T35*0 ⇒ やじるし #T35*0 ⇔ やじるし #T35*0 ☞ やじるし #T35*0 ☜ やじるし #T35*0 ☝ やじるし #T35*0 ☟ やじるし #T35*0 ⇆ やじるし #T35*0 ⇄ やじるし #T35*0 ⇅ やじるし #T35*0 ⇨ やじるし #T35*0 ⇦ やじるし #T35*0 ⇧ やじるし #T35*0 ⇩ ゆうびん #T35*0 〒 ゆうびん #T35*0 〠 ゆえに #T35*0 ∴ よこぼう #T35*0 ‐ よこぼう #T35*0 〓 よこぼう #T35*0  ̄ よこぼう #T35*0 _ よこぼう #T35*0 〜 よこぼう #T35*0 — より #T35*0 ゟ りっぽうせんち #T35*0 ㎤ りっぽうめーとる #T35*0 ㎥ ろーますうじ #T35*0 Ⅰ ろーますうじ #T35*0 Ⅱ ろーますうじ #T35*0 Ⅲ ろーますうじ #T35*0 Ⅳ ろーますうじ #T35*0 Ⅴ ろーますうじ #T35*0 Ⅵ ろーますうじ #T35*0 Ⅶ ろーますうじ #T35*0 Ⅷ ろーますうじ #T35*0 Ⅸ ろーますうじ #T35*0 Ⅹ ろーますうじ #T35*0 Ⅺ ろーますうじ #T35*0 Ⅻ ろーますうじ #T35*0 XIII ろーますうじ #T35*0 XIV ろーますうじ #T35*0 XV ろーますうじ #T35*0 ⅰ ろーますうじ #T35*0 ⅱ ろーますうじ #T35*0 ⅲ ろーますうじ #T35*0 ⅳ ろーますうじ #T35*0 ⅴ ろーますうじ #T35*0 ⅵ ろーますうじ #T35*0 ⅶ ろーますうじ #T35*0 ⅷ ろーますうじ #T35*0 ⅸ ろーますうじ #T35*0 ⅹ ろーますうじ #T35*0 ⅺ ろーますうじ #T35*0 ⅻ ろーますうじ #T35*0 xiii ろーますうじ #T35*0 xiv ろーますうじ #T35*0 xv ibus-anthy-1.5.17/data/zipcode-textdic.py000077500000000000000000000036641475510605700203000ustar00rootroot00000000000000#!/usr/bin/python # Finally decided to import anthy zipcode.t with UTF-8 into ibus-anthy # because if digits without hyphen is grepped by engine, it could cause # the timeout issue. If digits without hyphen are sent to anthy, # digits with hyphen also need to be sent to anthy so the lookup could # include too many and unnecessary candidates. # Also wish to install the filename of 'zipcode.t' to simplify enigne. # for python2 from __future__ import print_function import codecs import sys if len(sys.argv) < 2: print('usage: %s /usr/share/anthy/zipcode.t' % sys.argv[0], file=sys.stderr) exit(-1) anthy_zipfile = sys.argv[1] try: contents = codecs.open(anthy_zipfile, 'r', 'euc_jp').read() except UnicodeDecodeError as e: print('Your file is not eucJP? %s' % anthy_zipfile, file=sys.stderr) contents = open(anthy_zipfile).read() output_zipfile = codecs.open('zipcode.t', 'w', 'utf-8') output_zipfile.write('# copied %s with UTF-8.\n#\n' % anthy_zipfile) for line in contents.split('\n'): if len(line) == 0 or line[0] == '#': output_zipfile.write('%s\n' % line) continue words = line.split() if len(words) < 3: continue if len(words[0]) < 1 or ord(words[0][0]) > 0xff: mbcs_addr = words[0] else: uni_addr = '' i = 0 for word in words[0]: # Convert ASCII number char to wide number char. if sys.version < '3': uni_addr += unichr(0xfee0 + ord(word)) else: uni_addr += chr(0xfee0 + ord(word)) if i == 2: # Insert wide hyphen if sys.version < '3': uni_addr += unichr(0x30fc) else: uni_addr += chr(0x30fc) i += 1 mbcs_addr = uni_addr output_zipfile.write('%s %s %s\n' % \ (mbcs_addr, '#T35*500', words[2])) output_zipfile.flush() output_zipfile.close() ibus-anthy-1.5.17/debian/000077500000000000000000000000001475510605700151245ustar00rootroot00000000000000ibus-anthy-1.5.17/debian/changelog000066400000000000000000000101641475510605700170000ustar00rootroot00000000000000ibus-anthy (1.2.5-1ppa1~maverick2) maverick; urgency=low * New upstream release. * debian/control: - bump standards version to 3.9.1. - add kasumi dependency. * debian/rules: - add --with-anthy-zipcode. -- Takao Fujiwara Thu, 16 Dec 2010 21:50:16 +0900 ibus-anthy (1.2.1-1) unstable; urgency=low * New upstream release. - debian/patches/broken-link: removed. - debian/patches/zipcode-t-dir: removed. * debian/control: - set maintainer to IME team, add me to uploaders. - update Vcs-* fields. -- LI Daobing Thu, 29 Apr 2010 20:21:17 +0800 ibus-anthy (1.2.0.20100313-2) unstable; urgency=low * debian/source/format: 3.0. * Fix "ibus-anthy fails to start with "File exist" error" (Closes: #575540) - debian/patches/broken-link: also remove broken link in ~/.anthy - debian/patches/zipcode-t-dir: change the dir of zipcode.t -- LI Daobing Sat, 10 Apr 2010 18:39:23 +0800 ibus-anthy (1.2.0.20100313-1) unstable; urgency=low * New upstream release. * debian/control: bump standards version to 3.8.4. -- LI Daobing Sun, 21 Mar 2010 18:36:23 +0800 ibus-anthy (1.2.0.20100115-1) unstable; urgency=low * New upstream release. - fix convert_to_half do same as convert_to_half_katakana (LP: #475031) -- LI Daobing Sun, 24 Jan 2010 16:17:50 +0800 ibus-anthy (1.2.0.20091127-1) unstable; urgency=low * New upstream release. -- LI Daobing Sat, 28 Nov 2009 14:15:30 +0800 ibus-anthy (1.2.0.20090917-1) unstable; urgency=low * new upstream release. -- LI Daobing Thu, 17 Sep 2009 19:37:06 +0800 ibus-anthy (1.2.0.20090907-1) unstable; urgency=low * new upstream release. * debian/rules: update clean rule. -- LI Daobing Mon, 14 Sep 2009 21:23:56 +0800 ibus-anthy (1.2.0.20090813-2) unstable; urgency=low [ Loïc Minier ] * Drop useless CROSS logic in rules; build uses dh_auto_configure. * Drop /usr/share/misc/config.{sub,.guess} conditionals since these are always present (thanks to autotools-dev bdep). * Drop bogus ibus-anthy.lintian-overrides since the binary truly lacks a manpage. * Pass -s to dh_* in binary-arch. * Drop non-existent clean0 from .PHONY. * Cleanup rules droppping boilerplate comments and superfluous whitespace. * Add XS-Python-Version/XB-Python-Version: fields. * Version the python-dev bdep to >= 2.5. * Drop useless autoconf, automake, and libtool bdeps. * Update pot file during build; bdep on intltool. [ LI Daobing ] * debian/control: bump standards version to 3.8.3. -- LI Daobing Tue, 25 Aug 2009 19:19:26 +0800 ibus-anthy (1.2.0.20090813-1) unstable; urgency=low * new upstream release. * debian/control: change vcs url. -- LI Daobing Thu, 13 Aug 2009 21:48:20 +0800 ibus-anthy (1.2.0.20090804-1) unstable; urgency=low * new upstream release. -- LI Daobing Wed, 05 Aug 2009 20:31:23 +0800 ibus-anthy (1.2.0.20090617-1) unstable; urgency=low * new upstream release. * debian/control: - depends on ibus >= 1.2 - bump standards version to 3.8.2 -- LI Daobing Sat, 20 Jun 2009 23:15:11 +0800 ibus-anthy (1.1.0.20090603-1) unstable; urgency=low * new upstream release. -- LI Daobing Sat, 06 Jun 2009 16:58:31 +0800 ibus-anthy (1.1.0.20090402-1) unstable; urgency=low * initial release to Debian (closes: #521627) * new upstream release. * debian/debian/patches/01_rpath.dpatch: merged by upstream, removed. * no patch is needed. remove dpatch from debian/* * debian/control: - bump standards version to 3.8.1. - change maintainer's email. - add ${python:Depends} to depends. -- LI Daobing Thu, 23 Apr 2009 19:47:11 +0800 ibus-anthy (0.1.1.20080912-0ubuntu1) jaunty; urgency=low * Initial release (LP: #312715) * debian/patches/01_rpath.dpatch: remove rpath in Makefile.am -- LI Daobing Fri, 13 Feb 2009 20:41:26 +0800 ibus-anthy-1.5.17/debian/compat000066400000000000000000000000021475510605700163220ustar00rootroot000000000000007 ibus-anthy-1.5.17/debian/control000066400000000000000000000017341475510605700165340ustar00rootroot00000000000000Source: ibus-anthy Section: utils Priority: optional Maintainer: IME Packaging Team Uploaders: LI Daobing Build-Depends: debhelper (>= 7), autotools-dev, swig, python-dev (>= 2.5), pkg-config, libanthy-dev, python-support, intltool Standards-Version: 3.9.1 Homepage: http://code.google.com/p/ibus XS-Python-Version: >= 2.5 Vcs-Bzr: lp:~pkg-ime/ibus/debian-ibus-anthy Vcs-Browser: https://code.launchpad.net/~pkg-ime/ibus/debian-ibus-anthy Package: ibus-anthy Architecture: any Depends: ${python:Depends}, ${shlibs:Depends}, ${misc:Depends}, ibus (>= 1.2), anthy, kasumi XB-Python-Version: ${python:Versions} Description: anthy engine for IBus 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-Anthy is an input method (IM) for Japanese, based on IBus. ibus-anthy-1.5.17/debian/copyright000066400000000000000000000024221475510605700170570ustar00rootroot00000000000000This package was debianized by: LI Daobing on Sun, 28 Dec 2008 20:30:06 +0800 It was downloaded from: http://code.google.com/p/ibus/downloads/list 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 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 General Public License for more details. You should have received a copy of the GNU 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 General Public License can be found in `/usr/share/common-licenses/GPL'. The Debian packaging is: Copyright (C) 2008, LI Daobing and is licensed under the GPL, see above. ibus-anthy-1.5.17/debian/rules000077500000000000000000000017731475510605700162140ustar00rootroot00000000000000#!/usr/bin/make -f config.status: dh_testdir cp -f /usr/share/misc/config.sub config.sub cp -f /usr/share/misc/config.guess config.guess dh_auto_configure -- \ --with-anthy-zipcode="/usr/share/anthy/dic/zipcode.t" build: build-stamp build-stamp: config.status dh_testdir cd po; intltool-update --pot touch $@ clean: dh_testdir dh_testroot [ ! -f Makefile ] || $(MAKE) distclean rm -f config.sub config.guess rm -f po/*.gmo dh_clean build-stamp install: build dh_testdir dh_testroot dh_prep dh_installdirs $(MAKE) DESTDIR=$(CURDIR)/debian/ibus-anthy install binary-indep: install binary-arch: install dh_testdir dh_testroot dh_installchangelogs -s dh_installdocs -s AUTHORS README dh_installexamples -s dh_pysupport -s dh_installman -s dh_lintian -s dh_link -s dh_strip -s dh_compress -s dh_fixperms -s dh_installdeb -s dh_shlibdeps -s dh_gencontrol -s dh_md5sums -s dh_builddeb -s binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install ibus-anthy-1.5.17/debian/source/000077500000000000000000000000001475510605700164245ustar00rootroot00000000000000ibus-anthy-1.5.17/debian/source/format000066400000000000000000000000141475510605700176320ustar00rootroot000000000000003.0 (quilt) ibus-anthy-1.5.17/debian/watch000066400000000000000000000001701475510605700161530ustar00rootroot00000000000000version=3 http://code.google.com/p/ibus/downloads/list \ http://ibus.googlecode.com/files/ibus-anthy-([0-9].*)\.tar\.gz ibus-anthy-1.5.17/engine/000077500000000000000000000000001475510605700151475ustar00rootroot00000000000000ibus-anthy-1.5.17/engine/.gitignore000066400000000000000000000000501475510605700171320ustar00rootroot00000000000000anthy.py anthy_wrap.c ibus-engine-anthy ibus-anthy-1.5.17/engine/Makefile.am000066400000000000000000000017121475510605700172040ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2014 Takao Fujiwara # Copyright (c) 2014 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. SUBDIRS = if ENABLE_PYTHON2 SUBDIRS += python2 endif if ENABLE_PYTHON3 SUBDIRS += python3 endif ibus-anthy-1.5.17/engine/python2/000077500000000000000000000000001475510605700165525ustar00rootroot00000000000000ibus-anthy-1.5.17/engine/python2/Makefile.am000066400000000000000000000075061475510605700206160ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2019 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BUILT_SOURCES = _config.py engine_anthy_PYTHON = \ _config.py \ engine.py \ factory.py \ jastring.py \ kana.py \ main.py \ romaji.py \ segment.py \ tables.py \ thumb.py \ $(NULL) engine_anthydir = $(pkgdatadir)/engine engine_anthy_built_files = $(BUILT_SOURCES) engine_anthy_built_in_files = $(addsuffix .in, $(engine_anthy_built_files)) PYGTK2_ANTHY_RAW = anthy.i PYGTK2_ANTHY_GEN = anthy.py anthy_wrap.c if HAVE_PYGTK2_ANTHY anthy_DATA = \ anthy.py \ $(NULL) anthy_LTLIBRARIES = _anthy.la anthydir = @pyexecdir@ _anthy_la_SOURCES = \ $(NULL) nodist__anthy_la_SOURCES = \ anthy_wrap.c \ $(NULL) _anthy_la_CFLAGS = \ @ANTHY_CFLAGS@ \ @PYTHON_CFLAGS@ \ $(NULL) _anthy_la_LDFLAGS = \ @ANTHY_LIBS@ \ @PYTHON_LIBS@ \ -avoid-version \ -module \ $(NULL) anthy.py anthy_wrap.c: anthy.i $(SWIG) -python $(ANTHY_CFLAGS) -I/usr/include -o anthy_wrap.c $(srcdir)/anthy.i endif libexec_SCRIPTS = ibus-engine-anthy component_DATA = anthy.xml componentdir = $(datadir)/ibus/component engine_DATA = default.xml enginedir = $(pkgdatadir)/engine # $(SYMBOL_XML) cannot be extracted in Makefile but $(libexecdir) can be # extracted to ${exec_prefix}/libexec so use capital @LIBEXECDIR@ here. %.xml: %.inputMethod.xml.in sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|g" \ -e "s|\@PKGDATADIR\@|$(pkgdatadir)|g" \ $< > $@ ibus-engine-anthy: ibus-engine-anthy.in sed -e "s|\@prefix\@|$(prefix)|g" \ -e "s|\@exec_prefix\@|$(exec_prefix)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@datarootdir\@|$(datarootdir)|g" \ -e "s|\@PACKAGE\@|$(PACKAGE)|g" \ -e "s|\@PYTHON\@|$(PYTHON)|g" \ -e "s|\@ENV_IBUS_ENGINE\@|$(ENV_IBUS_ENGINE)|g" \ $< > $@ _config.py: _config.py.in sed -e "s|\@pkgdatadir\@|$(pkgdatadir)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@datadir\@|$(datadir)|g" \ -e "s|\@ANTHY_PC\@|$(ANTHY_PC)|g" \ -e "s|\@LAYOUT\@|$(LAYOUT)|g" \ -e "s|\@SYMBOL_CHAR_INT\@|$(SYMBOL_CHAR_INT)|g" \ -e "s|\@ICON_PREFERENCE\@|$(ICON_PREFERENCE)|g" \ -e "s|\@VERSION\@|$(VERSION)|g" \ $< > $@ test: $(ENV_IBUS_TEST) \ DBUS_DEBUG=true \ IBUS_ANTHY_PKGDATADIR=$(abs_top_srcdir) \ PYTHONPATH=$(builddir)/.libs:@pyexecdir@ \ $(PYTHON) \ $(srcdir)/main.py EXTRA_DIST = \ $(engine_anthy_built_in_files) \ $(PYGTK2_ANTHY_RAW) \ anthy.inputMethod.xml.in.in \ default.inputMethod.xml.in.in \ ibus-engine-anthy.in \ $(NULL) CLEANFILES = \ $(BUILT_SOURCES) \ $(PYGTK2_ANTHY_GEN) \ anthy.xml \ default.xml \ ibus-engine-anthy \ *.pyc \ $(NULL) DISTCLEANFILES = \ anthy.inputMethod.xml.in \ default.inputMethod.xml.in \ $(NULL) # Need a time lag between .py and .py.in files to build .py files # because *_PYTHON valuables are installed in the tarball. dist-hook: @sleep 1; \ for in_file in $(engine_anthy_built_in_files) ; do \ if [ -f $(distdir)/$(srcdir)/$$in_file ] ; then \ touch $(distdir)/$(srcdir)/$$in_file; \ fi; \ done; ibus-anthy-1.5.17/engine/python2/_config.py.in000066400000000000000000000023011475510605700211310ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2019 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ANTHY_PC= '@ANTHY_PC@' PKGDATADIR = '@pkgdatadir@' LIBEXECDIR = '@libexecdir@' LOCALEDIR = '@datadir@/locale' LAYOUT = '@LAYOUT@' SYMBOL_CHAR = unichr(@SYMBOL_CHAR_INT@) ICON_PREFERENCE = '@ICON_PREFERENCE@' VERSION = '@VERSION@' DEBUG = False ibus-anthy-1.5.17/engine/python2/anthy.i000066400000000000000000000062051475510605700200520ustar00rootroot00000000000000/* vim:set et ts=4: */ /* * ibus-anthy - The Anthy engine for IBus * * Copyright (c) 2007-2008 Peng Huang * Copyright (c) 2010-2013 Takao Fujiwara * Copyright (c) 2007-2013 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. */ %module anthy %{ /* Put header files here or function declarations like below */ #include %} %init %{ anthy_init (); %} /* anthy_context_t */ %include anthy/anthy.h struct anthy_context {}; %extend anthy_context { anthy_context () { return anthy_create_context (); } void reset () { anthy_reset_context (self); } int set_string (char *str) { return anthy_set_string (self, str); } void resize_segment (int a1, int a2) { anthy_resize_segment (self, a1, a2); } int get_stat (struct anthy_conv_stat *a1) { return anthy_get_stat (self, a1); } int get_segment_stat (int a1, struct anthy_segment_stat *a2) { return anthy_get_segment_stat (self, a1, a2); } char *get_segment (int a1, int a2) { int len; static char temp[512]; len = anthy_get_segment (self, a1, a2, temp, sizeof (temp)); if (len >= 0) return temp; else return NULL; } int commit_segment (int a1, int a2) { return anthy_commit_segment (self, a1, a2); } int set_prediction_string (const char *a1) { return anthy_set_prediction_string (self, a1); } int get_prediction_stat (struct anthy_prediction_stat *a1) { return anthy_get_prediction_stat (self, a1); } char *get_prediction (int a1) { int len; static char temp[512]; len = anthy_get_prediction (self, a1, temp, sizeof (temp)); if (len >= 0) return temp; else return NULL; } int commit_prediction (int a1) { return anthy_commit_prediction(self, a1); } void _print () { anthy_print_context (self); } int _set_encoding (int encoding) { return anthy_context_set_encoding (self, encoding); } int set_reconversion_mode (int mode) { return anthy_set_reconversion_mode (self, mode); } int init_personality (void) { return anthy_init_personality (); } int do_set_personality (const char *id) { return anthy_do_set_personality (id); } ~anthy_context () { anthy_release_context (self); } }; ibus-anthy-1.5.17/engine/python2/anthy.inputMethod.xml.in.in000066400000000000000000000012221475510605700237250ustar00rootroot00000000000000 org.freedesktop.IBus.Anthy Anthy Component @LIBEXECDIR@/ibus-engine-anthy --ibus @PACKAGE_VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL https://github.com/ibus/ibus/wiki ibus-anthy ~/.config/ibus-anthy/engines.xml @PKGDATADIR@/engine/default.xml ibus-anthy-1.5.17/engine/python2/default.inputMethod.xml.in.in000066400000000000000000000010711475510605700242300ustar00rootroot00000000000000 anthy ja GPL Peng Huang <shawn.p.huang@gmail.com> ibus-anthy @LAYOUT_XML@ Anthy Anthy Input Method 99 @HOTKEYS_XML@ @SYMBOL_XML@ @ICON_PROP_KEY_XML@ @PACKAGE_VERSION@ ibus-anthy ibus-anthy-1.5.17/engine/python2/engine.py000066400000000000000000003363701475510605700204050ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2024 Takao Fujiwara # Copyright (c) 2007-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. import io import os from os import environ, path import signal import sys from gettext import dgettext from main import get_userhome try: from locale import getpreferredencoding except: pass from gi import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') gi_require_version('Anthy', '9000') from gi.repository import GLib from gi.repository import IBus from gi.repository import Anthy NTH_UNCONVERTED_CANDIDATE = Anthy.NTH_UNCONVERTED_CANDIDATE NTH_KATAKANA_CANDIDATE = Anthy.NTH_KATAKANA_CANDIDATE NTH_HIRAGANA_CANDIDATE = Anthy.NTH_HIRAGANA_CANDIDATE NTH_HALFKANA_CANDIDATE = Anthy.NTH_HALFKANA_CANDIDATE import _config as config from tables import * import jastring from segment import unichar_half_to_full sys.path.append(path.join(config.PKGDATADIR, 'setup')) from anthyprefs import AnthyPrefs _ = lambda a : dgettext('ibus-anthy', a) N_ = lambda a : a UN = lambda a : unicode(a, 'utf-8') printerr = AnthyPrefs.printerr ANTHY_CONFIG_PATH = get_userhome() + '/.anthy' if config.ANTHY_PC == 'anthy' \ else GLib.get_user_config_dir() + '/anthy'; INPUT_MODE_HIRAGANA, \ INPUT_MODE_KATAKANA, \ INPUT_MODE_HALF_WIDTH_KATAKANA, \ INPUT_MODE_LATIN, \ INPUT_MODE_WIDE_LATIN = range(5) CONV_MODE_OFF, \ CONV_MODE_ANTHY, \ CONV_MODE_HIRAGANA, \ CONV_MODE_KATAKANA, \ CONV_MODE_HALF_WIDTH_KATAKANA, \ CONV_MODE_LATIN_0, \ CONV_MODE_LATIN_1, \ CONV_MODE_LATIN_2, \ CONV_MODE_LATIN_3, \ CONV_MODE_WIDE_LATIN_0, \ CONV_MODE_WIDE_LATIN_1, \ CONV_MODE_WIDE_LATIN_2, \ CONV_MODE_WIDE_LATIN_3, \ CONV_MODE_PREDICTION = range(14) SEGMENT_DEFAULT = 0 SEGMENT_SINGLE = 1 << 0 SEGMENT_IMMEDIATE = 1 << 1 CLIPBOARD_RECONVERT = range(1) LINK_DICT_EMBEDDED, \ LINK_DICT_SINGLE = range(2) IMPORTED_EMBEDDED_DICT_DIR = 'imported_words_default.d' IMPORTED_EMBEDDED_DICT_PREFIX = 'ibus__' IMPORTED_SINGLE_DICT_PREFIX = 'imported_words_ibus__' KP_Table = {} for s in dir(IBus): if s.startswith('KEY_KP_'): v = IBus.keyval_from_name(s[7:]) if v: KP_Table[IBus.keyval_from_name(s[4:])] = v for k, v in zip(['KEY_KP_Add', 'KEY_KP_Decimal', 'KEY_KP_Divide', 'KEY_KP_Enter', 'KEY_KP_Equal', 'KEY_KP_Multiply', 'KEY_KP_Separator', 'KEY_KP_Space', 'KEY_KP_Subtract'], ['KEY_plus', 'KEY_period', 'KEY_slash', 'KEY_Return', 'KEY_equal', 'KEY_asterisk', 'KEY_comma', 'KEY_space', 'KEY_minus']): KP_Table[getattr(IBus, k)] = getattr(IBus, v) class Engine(IBus.EngineSimple): __input_mode = None __typing_mode = None __segment_mode = None __dict_mode = None __setup_pid = 0 __prefs = None __keybind = {} __thumb = None __latin_with_shift = True def __init__(self, bus, object_path): if hasattr(IBus.Engine.props, 'has_focus_id'): super(Engine, self).__init__(engine_name="anthy", connection=bus.get_connection(), object_path=object_path, has_focus_id=True) else: super(Engine, self).__init__(engine_name="anthy", connection=bus.get_connection(), object_path=object_path) self.add_table_by_locale(None) # create anthy context if not self.__verify_anthy_journal_file(): return Anthy.GContext.set_logger(0); self.__context = Anthy.GContext() self.__context.set_encoding(Anthy.UTF8_ENCODING) # init state self.__idle_id = 0 self.__prop_dict = {} self.__input_purpose = 0 self.__has_input_purpose = False # OSK mode is designed for OSK on gnome-shell, which always shows # IBus lookup window prior to the preedit and selecting a candidate # causes the commmit instead of the selection. self.__osk_mode = False self.__selected_preedit_commit = False if hasattr(IBus, 'InputPurpose'): self.__has_input_purpose = True try: self.__is_utf8 = (getpreferredencoding().lower() == 'utf-8') except: self.__is_utf8 = False self.__has_update_preedit_text_with_mode = True try: self.__ibus_check_version('1.3') except ValueError as e: printerr('Disable update_preedit_text_with_mode(): %s' % str(e)) self.__has_update_preedit_text_with_mode = False # self.__lookup_table = ibus.LookupTable.new(page_size=9, # cursor_pos=0, # cursor_visible=True, # round=True) size = self.__prefs.get_value('common', 'page-size') self.__lookup_table = IBus.LookupTable.new(page_size=size, cursor_pos=0, cursor_visible=True, round=True) self.__prop_list = self.__init_props() # Do not use self.do_process_key_event to work ISO 14755 # with Ctrl+Shift+u . # The super (parent) method of do_process_key_event is called # loop infinitely if this class overrides it. # self.process_key_event is not accessible too. self.connect('process-key-event', self.__process_key_event) self.connect('destroy', self.__destroy) self.connect('page-down', self.__page_down) self.connect('page-up', self.__page_up) self.connect('candidate-clicked', self.__candidate_clicked) self.__init_signal() # use reset to init values self.__reset() def __ibus_check_version(self, v): major = IBus.MAJOR_VERSION minor = IBus.MINOR_VERSION micro = IBus.MICRO_VERSION if (major, minor, micro) < tuple(map(int, (v.split('.')))): raise ValueError('Required ibus %s but version of ibus is ' \ '%d.%d.%d' % (v, major, minor, micro)) # http://en.sourceforge.jp/ticket/browse.php?group_id=14&tid=33075 def __verify_anthy_journal_file(self): journal = ANTHY_CONFIG_PATH + '/last-record2_default.utf8' try: f = io.open(file=journal, mode='rb') except IOError: return True f.seek(-1, io.SEEK_END) last = f.read(1) f.close() if ord(last) == 0xa: return True from gi.repository import Gtk message= N_("Could not enable Anthy.\n" \ "The end of the content of the file " \ "%s/last-record2_default.utf8 in your home " \ "directory is not '\\n'. I.e. not correct text format.\n" \ "Please fix the file or remove it by manual and " \ "restart IBus.") % ANTHY_CONFIG_PATH printerr(message) dlg = Gtk.MessageDialog(parent=None, flags=Gtk.DialogFlags.MODAL, message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.OK, message_format=_(message)) dlg.run() dlg.destroy() return False # reset values of engine def __reset(self): self.__preedit_ja_string = jastring.JaString(Engine.__typing_mode, self.__latin_with_shift) self.__convert_chars = u'' self.__cursor_pos = 0 self.__convert_mode = CONV_MODE_OFF self.__segments = list() self.__lookup_table.clear() self.__lookup_table_visible = False self._MM = 0 self._SS = 0 self._H = 0 self._RMM = 0 self._RSS = 0 if self.__idle_id != 0: GLib.source_remove(self.__idle_id) self.__idle_id = 0 def __init_props(self): anthy_props = IBus.PropList() self.__set_input_mode_props(anthy_props) self.__set_typing_method_props(anthy_props) self.__set_segment_mode_props(anthy_props) self.__set_dict_mode_props(anthy_props) self.__set_dict_config_props(anthy_props) if not self.__prefs.get_value('common', 'show-preferences'): return anthy_props anthy_props.append(IBus.Property(key=u'setup', label=IBus.Text.new_from_string(_("Preferences - Anthy")), icon=config.ICON_PREFERENCE, tooltip=IBus.Text.new_from_string(_("Configure Anthy")), sensitive=True, visible=True)) return anthy_props def __init_signal(self): signal.signal(signal.SIGHUP, self.__signal_cb) signal.signal(signal.SIGINT, self.__signal_cb) signal.signal(signal.SIGQUIT, self.__signal_cb) signal.signal(signal.SIGABRT, self.__signal_cb) signal.signal(signal.SIGTERM, self.__signal_cb) def __signal_cb(self, signum, object): self.__remove_dict_files() signal.signal(signum, signal.SIG_DFL) os.kill(os.getpid(), signum) def __set_input_mode_props(self, anthy_props): # The class method is kept even if the engine is switched. if Engine.__input_mode == None: # The config value is readonly for initial engine and # the engine keeps the class method in the memory. Engine.__input_mode = INPUT_MODE_HIRAGANA Engine.__input_mode = self.__prefs.get_value('common', 'input-mode') if not self.__prefs.get_value('common', 'show-input-mode'): return # init input mode properties symbol = 'あ' ''' Need to split _() by line for intltool to detect them. ''' # Translators: Specify the order of %s with your translation. # It will be "Input Mode (A)" for example. label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Input mode"), 'symbol' : symbol } input_mode_prop = IBus.Property(key=u'InputMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(symbol), icon='', tooltip=IBus.Text.new_from_string(_("Switch input mode")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict[u'InputMode'] = input_mode_prop props = IBus.PropList() props.append(IBus.Property(key=u'InputMode.Hiragana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Hiragana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'InputMode.Katakana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Katakana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'InputMode.HalfWidthKatakana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Halfwidth Katakana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'InputMode.Latin', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Latin")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'InputMode.WideLatin', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Wide Latin")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__input_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 input_mode_prop.set_sub_props(props) anthy_props.append(input_mode_prop) mode = Engine.__input_mode mode = 'InputMode.' + ['Hiragana', 'Katakana', 'HalfWidthKatakana', 'Latin', 'WideLatin'][mode] self.__input_mode_activate(mode, IBus.PropState.CHECKED) def __set_typing_method_props(self, anthy_props): if Engine.__typing_mode == None: Engine.__typing_mode = jastring.TYPING_MODE_ROMAJI Engine.__typing_mode = self.__prefs.get_value('common', 'typing-method') if not self.__prefs.get_value('common', 'show-typing-method'): return # typing input mode properties symbol = 'R' label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Typing method"), 'symbol' : symbol } typing_mode_prop = IBus.Property(key=u'TypingMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(symbol), icon='', tooltip=IBus.Text.new_from_string(_("Switch typing method")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict[u'TypingMode'] = typing_mode_prop props = IBus.PropList() props.append(IBus.Property(key=u'TypingMode.Romaji', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Romaji")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'TypingMode.Kana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Kana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'TypingMode.ThumbShift', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Thumb shift")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__typing_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 typing_mode_prop.set_sub_props(props) anthy_props.append(typing_mode_prop) mode = Engine.__typing_mode mode = 'TypingMode.' + ['Romaji', 'Kana', 'ThumbShift'][mode] self.__typing_mode_activate(mode, IBus.PropState.CHECKED) def __set_segment_mode_props(self, anthy_props): if Engine.__segment_mode == None: Engine.__segment_mode = SEGMENT_DEFAULT Engine.__segment_mode = self.__prefs.get_value('common', 'conversion-segment-mode') if not self.__prefs.get_value('common', 'show-segment-mode'): return symbol = '連' label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Segment mode"), 'symbol' : symbol } segment_mode_prop = IBus.Property(key=u'SegmentMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(symbol), icon=None, tooltip=IBus.Text.new_from_string(_("Switch conversion mode")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict[u'SegmentMode'] = segment_mode_prop props = IBus.PropList() props.append(IBus.Property(key=u'SegmentMode.Multi', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Multiple segment")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'SegmentMode.Single', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Single segment")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'SegmentMode.ImmediateMulti', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Immediate conversion (multiple segment)")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'SegmentMode.ImmediateSingle', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Immediate conversion (single segment)")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__segment_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 segment_mode_prop.set_sub_props(props) anthy_props.append(segment_mode_prop) mode = Engine.__segment_mode mode = 'SegmentMode.' + ['Multi', 'Single', 'ImmediateMulti', 'ImmediateSingle'][mode] self.__segment_mode_activate(mode, IBus.PropState.CHECKED) def __set_dict_mode_props(self, anthy_props, update_prop=False): if Engine.__dict_mode == None: Engine.__dict_mode = 0 if not self.__prefs.get_value('common', 'show-dict-mode'): return dicts = self.__prefs.get_value('dict', 'list') short_label = dicts['embedded'].short_label label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Dictionary mode"), 'symbol' : short_label } dict_mode_prop = IBus.Property(key=u'DictMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(short_label), icon=None, tooltip=IBus.Text.new_from_string(_("Switch dictionary")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict[u'DictMode'] = dict_mode_prop props = IBus.PropList() long_label = dicts['embedded'].long_label props.append(IBus.Property(key=u'DictMode.embedded', prop_type=IBus.PropType.RADIO, # if long_label is UTF-8 label=IBus.Text.new_from_string(UN(_(long_label))), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) files = self.__prefs.get_value('dict', 'files') dicts = self.__prefs.get_value('dict', 'list') for id in order: dict_item = dicts[id] is_cont = False for file in files[id]: if not self.__link_dict_file(dict_item, file): is_cont = True break if is_cont: continue if not dict_item.single: continue key = 'DictMode.' + id long_label = dict_item.long_label # ibus-config 'value-changed' signal updated dict/files but # not dict/file/new yet. if long_label == None: continue # if long_label is UTF-8 if dict_item.is_system: uni_long_label = UN(_(long_label)) else: uni_long_label = UN(long_label) props.append(IBus.Property(key=UN(key), prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(uni_long_label), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__dict_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 dict_mode_prop.set_sub_props(props) if update_prop: # focus-in event will call register_properties(). # Need to switch another IME to update menus on GtkStatusIcon? anthy_props.update_property(dict_mode_prop) else: anthy_props.append(dict_mode_prop) prop_name = self.__dict_mode_get_prop_name(Engine.__dict_mode) if prop_name == None: return self.__dict_mode_activate(prop_name, IBus.PropState.CHECKED) def __set_dict_config_props(self, anthy_props): if not self.__prefs.get_value('common', 'show-dict-config'): return admin_command = self.__prefs.get_value('common', 'dict-admin-command') icon_path = self.__prefs.get_value('common', 'dict-config-icon') if not path.exists(admin_command[0]): return label = _("Dictionary - Anthy") # if icon_path is UTF-8 if icon_path and path.exists(icon_path): icon = UN(icon_path) else: # Translators: "Dic" means 'dictionary', One kanji may be good. label = _("Dic") icon = u'' dict_prop = IBus.Property(key=u'setup-dict-kasumi', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), icon=icon, tooltip=IBus.Text.new_from_string(_("Configure dictionaries")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict[u'setup-dict-kasumi'] = dict_prop props = IBus.PropList() props.append(IBus.Property(key=u'setup-dict-kasumi-admin', prop_type=IBus.PropType.NORMAL, label=IBus.Text.new_from_string(_("Edit dictionaries")), icon=icon, tooltip=IBus.Text.new_from_string(_("Launch the dictionary tool")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key=u'setup-dict-kasumi-word', prop_type=IBus.PropType.NORMAL, label=IBus.Text.new_from_string(_("Add words")), icon=icon, tooltip=IBus.Text.new_from_string(_("Add words to the dictionary")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 dict_prop.set_sub_props(props) anthy_props.append(dict_prop) def __get_clipboard(self, clipboard, text, data): clipboard_text = clipboard.wait_for_text () if data == CLIPBOARD_RECONVERT: self.__update_reconvert(clipboard_text) return clipboard_text def __get_single_dict_files(self): order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) files = self.__prefs.get_value('dict', 'files') dicts = self.__prefs.get_value('dict', 'list') single_files = [] for id in order: for file in files[id]: if not path.exists(file): continue dict_item = dicts[id] if dict_item.single: single_files.append(file) return single_files def __remove_dict_files(self): dicts = self.__prefs.get_value('dict', 'list') files = self.__prefs.get_value('dict', 'files') for id in files.keys(): dict_item = dicts[id] for file in files[id]: self.__remove_dict_file(dict_item, file) def update_preedit(self, string, attrs, cursor_pos, visible): text = IBus.Text.new_from_string(string) i = 0 while attrs.get(i) != None: attr = attrs.get(i) text.append_attribute(attr.get_attr_type(), attr.get_value(), attr.get_start_index(), attr.get_end_index()) i += 1 mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if self.__has_update_preedit_text_with_mode and mode == 1: self.update_preedit_text_with_mode(text, cursor_pos, visible, IBus.PreeditFocusMode.COMMIT) else: self.update_preedit_text(text, cursor_pos, visible) def update_aux_string(self, string, attrs, visible): text = IBus.Text.new_from_string(string) i = 0 while attrs.get(i) != None: attr = attrs.get(i) text.append_attribute(attr.get_attr_type(), attr.get_value(), attr.get_start_index(), attr.get_end_index()) i += 1 self.update_auxiliary_text(text, visible) def __page_up(self, obj): # only process cursor down in convert mode if self.__convert_mode != CONV_MODE_ANTHY: return False if not self.__lookup_table.page_up(): return False index = self.__lookup_table.get_cursor_pos() # if candidate is UTF-8 candidate = UN(self.__lookup_table.get_candidate(index).get_text()) self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def __page_down(self, obj): # only process cursor down in convert mode if self.__convert_mode != CONV_MODE_ANTHY: return False if not self.__lookup_table.page_down(): return False index = self.__lookup_table.get_cursor_pos() # if candidate is UTF-8 candidate = UN(self.__lookup_table.get_candidate(index).get_text()) self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def do_cursor_up(self): # only process cursor down in convert mode # if self.__convert_mode != CONV_MODE_ANTHY: if self.__convert_mode != CONV_MODE_ANTHY and self.__convert_mode != CONV_MODE_PREDICTION: return False if not self.__lookup_table.cursor_up(): return False index = self.__lookup_table.get_cursor_pos() # if candidate is UTF-8 candidate = UN(self.__lookup_table.get_candidate(index).get_text()) self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def do_cursor_down(self): # only process cursor down in convert mode # if self.__convert_mode != CONV_MODE_ANTHY: if self.__convert_mode != CONV_MODE_ANTHY and self.__convert_mode != CONV_MODE_PREDICTION: return False if not self.__lookup_table.cursor_down(): return False index = self.__lookup_table.get_cursor_pos() # if candidate is UTF-8 candidate = UN(self.__lookup_table.get_candidate(index).get_text()) self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def __candidate_clicked(self, obj, index, button, state): if index == 9: keyval = IBus.KEY_0 else: keyval = IBus.KEY_1 + index prev_cursor_pos = self.__cursor_pos self.__on_key_number(keyval) if self.__osk_mode and prev_cursor_pos == self.__cursor_pos: if self.__idle_id != 0: self.__selected_preedit_commit = True else: self.__on_key_return() def __commit_string(self, text): self.__reset() self.commit_text(IBus.Text.new_from_string(text)) self.__invalidate() def __shrink_segment(self, relative_size): self.__context.resize_segment(self.__cursor_pos, relative_size) nr_segments = self.__context.get_nr_segments() del self.__segments[self.__cursor_pos:] for i in xrange(self.__cursor_pos, nr_segments): buf = self.__context.get_segment(i, 0) text = UN(buf) self.__segments.append((0, text)) self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def __shrink_segment_end(self): while self.__context.get_nr_segments() > 1: self.__context.resize_segment(self.__cursor_pos, 1) nr_segments = self.__context.get_nr_segments() del self.__segments[self.__cursor_pos:] for i in range(self.__cursor_pos, nr_segments): buf = self.__context.get_segment(i, 0) text = buf self.__segments.append((0, text)) self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def do_property_activate(self, prop_name, state): if state == IBus.PropState.CHECKED: if prop_name == None: return elif prop_name.startswith(u'InputMode.'): self.__input_mode_activate(prop_name, state) return elif prop_name.startswith(u'TypingMode.'): self.__typing_mode_activate(prop_name, state) return elif prop_name.startswith(u'SegmentMode.'): self.__segment_mode_activate(prop_name, state) return elif prop_name.startswith(u'DictMode.'): self.__dict_mode_activate(prop_name, state) return else: if prop_name == 'setup': self.__start_setup() elif prop_name == 'setup-dict-kasumi-admin': self.__start_dict_admin() elif prop_name == 'setup-dict-kasumi-word': self.__start_add_word() else: if prop_name not in self.__prop_dict.keys(): return self.__prop_dict[prop_name].set_state(state) if prop_name == 'DictMode': sub_name = self.__dict_mode_get_prop_name(self.__dict_mode) if sub_name == None: return self.__dict_mode_activate(sub_name, IBus.PropState.CHECKED) def __input_mode_activate(self, prop_name, state): input_modes = { u'InputMode.Hiragana' : (INPUT_MODE_HIRAGANA, 'あ'), u'InputMode.Katakana' : (INPUT_MODE_KATAKANA, 'ア'), u'InputMode.HalfWidthKatakana' : (INPUT_MODE_HALF_WIDTH_KATAKANA, '_ア'), u'InputMode.Latin' : (INPUT_MODE_LATIN, '_A'), u'InputMode.WideLatin' : (INPUT_MODE_WIDE_LATIN, 'A'), } if prop_name not in input_modes: printerr('Unknown prop_name = %s' % prop_name) return mode, symbol = input_modes[prop_name] if u'InputMode' not in self.__prop_dict.keys(): # Disable to show input mode with ibus-set-anthy Engine.__input_mode = mode return self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Input mode"), 'symbol' : symbol } Engine.__input_mode = mode prop = self.__prop_dict[u'InputMode'] prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__reset() self.__invalidate() def __typing_mode_activate(self, prop_name, state): if u'TypingMode' not in self.__prop_dict.keys(): # Disable to show typing mode with ibus-set-anthy return typing_modes = { u'TypingMode.Romaji' : (jastring.TYPING_MODE_ROMAJI, 'R'), u'TypingMode.Kana' : (jastring.TYPING_MODE_KANA, 'か'), u'TypingMode.ThumbShift' : (jastring.TYPING_MODE_THUMB_SHIFT, '親'), } if prop_name not in typing_modes: printerr('Unknown prop_name = %s' % prop_name) return self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) if prop_name == u'TypingMode.ThumbShift': self._reset_thumb() mode, symbol = typing_modes[prop_name] label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Typing method"), 'symbol' : symbol } Engine.__typing_mode = mode prop = self.__prop_dict[u'TypingMode'] prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__reset() self.__invalidate() def __refresh_typing_mode_property(self): if u'TypingMode' not in self.__prop_dict: # Disable to show typing mode with ibus-set-anthy return prop = self.__prop_dict[u'TypingMode'] modes = { jastring.TYPING_MODE_ROMAJI : (u'TypingMode.Romaji', 'R'), jastring.TYPING_MODE_KANA : (u'TypingMode.Kana', 'か'), jastring.TYPING_MODE_THUMB_SHIFT : (u'TypingMode.ThumbShift', '親'), } prop_name, symbol = modes.get(Engine.__typing_mode, (None, None)) if prop_name == None or symbol == None: return label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Typing method"), 'symbol' : symbol } _prop = self.__prop_dict[prop_name] _prop.set_state(IBus.PropState.CHECKED) self.update_property(_prop) prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) def __segment_mode_activate(self, prop_name, state): if u'SegmentMode' not in self.__prop_dict.keys(): # Disable to show segment mode with ibus-set-anthy return segment_modes = { u'SegmentMode.Multi' : (SEGMENT_DEFAULT, '連'), u'SegmentMode.Single' : (SEGMENT_SINGLE, '単'), u'SegmentMode.ImmediateMulti' : (SEGMENT_IMMEDIATE, '逐|連'), u'SegmentMode.ImmediateSingle' : (SEGMENT_IMMEDIATE | SEGMENT_SINGLE, '逐|単'), } if prop_name not in segment_modes: printerr('Unknown prop_name = %s' % prop_name) return self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) mode, symbol = segment_modes[prop_name] label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Segment mode"), 'symbol' : symbol } Engine.__segment_mode = mode prop = self.__prop_dict[u'SegmentMode'] prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__reset() self.__invalidate() def __dict_mode_get_prop_name(self, mode): if mode == 0: id = 'embedded' else: single_files = self.__get_single_dict_files() file = single_files[mode - 1] id = self.__get_dict_id_from_file(file) return 'DictMode.' + id def __dict_mode_activate(self, prop_name, state): if prop_name not in self.__prop_dict.keys(): # The prop_name is added. Need to restart. return i = prop_name.find('.') if i < 0: return # The id is already quoted. id = prop_name[i + 1:] file = None single_files = self.__get_single_dict_files() if id == 'embedded': pass else: found = False for file in single_files: if id == self.__get_quoted_id(file): found = True break if found == False: return if id == 'embedded': dict_name = 'default' Engine.__dict_mode = 0 else: if file not in single_files: printerr('Index error', file, single_files) return dict_name = 'ibus__' + id Engine.__dict_mode = single_files.index(file) + 1 self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) self.__context.init_personality() # dict_name is unicode but the argument is str. self.__context.do_set_personality(str(dict_name)) prop = self.__prop_dict[u'DictMode'] dicts = self.__prefs.get_value('dict', 'list') symbol = dicts[id].short_label label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Dictionary mode"), 'symbol' : symbol } prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) def __argb(self, a, r, g, b): return ((a & 0xff)<<24) + ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff) def __rgb(self, r, g, b): return self.__argb(255, r, g, b) def do_focus_in(self): self.do_focus_in_id(None, None) def do_focus_out(self): self.do_focus_out_id(None) def do_focus_in_id(self, object_path, client): self.register_properties(self.__prop_list) self.__refresh_typing_mode_property() mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if mode == 2: self.__update_input_chars() # self.__reset() # self.__invalidate() size = self.__prefs.get_value('common', 'page-size') if size != self.__lookup_table.get_page_size(): self.__lookup_table.set_page_size(size) def do_focus_out_id(self, object_path): if self.__has_input_purpose: self.__input_purpose = 0 mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if mode == 0 or mode == 1: self.__reset() self.__invalidate() def do_set_content_type(self, purpose, hints): if self.__has_input_purpose: self.__input_purpose = purpose def do_disable(self): self.__reset() self.__invalidate() def do_reset(self): mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if mode == 2: return self.__reset() self.__invalidate() def do_set_capabilities(self, caps): self.__osk_mode = True if caps & IBus.Capabilite.OSK else False def __destroy(self, obj): if self.__idle_id != 0: GLib.source_remove(self.__idle_id) self.__idle_id = 0 # It seems do_destroy() is called when launch_engine() is called. #self.__remove_dict_files() # It seems super.destroy() does not unref the engine. def __join_all_segments(self): while True: nr_segments = self.__context.get_nr_segments() seg = nr_segments - self.__cursor_pos if seg > 1: self.__context.resize_segment(self.__cursor_pos, 1) else: break def __normalize_preedit(self, preedit): if not self.__is_utf8: return preedit for key in romaji_normalize_rule.keys(): if preedit.find(key) >= 0: for value in romaji_normalize_rule[key]: preedit = preedit.replace(key, value) return preedit # begine convert def __begin_anthy_convert(self): if Engine.__segment_mode & SEGMENT_IMMEDIATE: self.__end_anthy_convert() if self.__convert_mode == CONV_MODE_ANTHY: return self.__convert_mode = CONV_MODE_ANTHY # text, cursor = self.__preedit_ja_string.get_hiragana() text, cursor = self.__preedit_ja_string.get_hiragana(True) text = self.__normalize_preedit(text) self.__context.set_string(text.encode('utf8')) if Engine.__segment_mode & SEGMENT_SINGLE: self.__join_all_segments() nr_segments = self.__context.get_nr_segments() for i in xrange(0, nr_segments): buf = self.__context.get_segment(i, 0) text = UN(buf) self.__segments.append((0, text)) if Engine.__segment_mode & SEGMENT_IMMEDIATE: self.__cursor_pos = nr_segments - 1 else: self.__cursor_pos = 0 self.__fill_lookup_table() if self.__osk_mode: self.__lookup_table_visible = True else: self.__lookup_table_visible = False def __end_anthy_convert(self): if self.__convert_mode == CONV_MODE_OFF: return self.__convert_mode = CONV_MODE_OFF self.__convert_chars = u'' self.__segments = list() self.__cursor_pos = 0 self.__lookup_table.clear() self.__lookup_table_visible = False def __end_convert(self): self.__end_anthy_convert() # test case 'verudhi' can show U+3046 + U+309B and U+3094 def __candidate_cb(self, candidate): if not self.__is_utf8: return for key in romaji_utf8_rule.keys(): if candidate.find(key) >= 0: for value in romaji_utf8_rule[key]: candidate = candidate.replace(key, value) self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate)) def __fill_lookup_table(self): if self.__convert_mode == CONV_MODE_PREDICTION: nr_predictions = self.__context.get_nr_predictions() # fill lookup_table self.__lookup_table.clear() for i in xrange(0, nr_predictions): buf = self.__context.get_prediction(i) candidate = UN(buf) self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate)) self.__candidate_cb(candidate) return # get segment stat nr_candidates = self.__context.get_nr_candidates(self.__cursor_pos) # fill lookup_table self.__lookup_table.clear() for i in xrange(0, nr_candidates): buf = self.__context.get_segment(self.__cursor_pos, i) candidate = UN(buf) self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate)) self.__candidate_cb(candidate) def __invalidate(self): if self.__idle_id != 0: return self.__idle_id = GLib.idle_add(self.__update, priority = GLib.PRIORITY_LOW) # def __get_preedit(self): def __get_preedit(self, commit=False): if Engine.__input_mode == INPUT_MODE_HIRAGANA: # text, cursor = self.__preedit_ja_string.get_hiragana() text, cursor = self.__preedit_ja_string.get_hiragana(commit) elif Engine.__input_mode == INPUT_MODE_KATAKANA: # text, cursor = self.__preedit_ja_string.get_katakana() text, cursor = self.__preedit_ja_string.get_katakana(commit) elif Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA: # text, cursor = self.__preedit_ja_string.get_half_width_katakana() text, cursor = self.__preedit_ja_string.get_half_width_katakana(commit) else: text, cursor = u'', 0 return text, cursor def __update_input_chars(self): text, cursor = self.__get_preedit() attrs = IBus.AttrList() attrs.append(IBus.attr_underline_new( IBus.AttrUnderline.SINGLE, 0, len(text))) self.update_preedit(text, attrs, cursor, not self.__preedit_ja_string.is_empty()) self.update_aux_string(u'', IBus.AttrList(), False) self.update_lookup_table(self.__lookup_table, self.__lookup_table_visible) def __update_convert_chars(self): # if self.__convert_mode == CONV_MODE_ANTHY: if self.__convert_mode == CONV_MODE_ANTHY or self.__convert_mode == CONV_MODE_PREDICTION: self.__update_anthy_convert_chars() return if self.__convert_mode == CONV_MODE_HIRAGANA: # text, cursor = self.__preedit_ja_string.get_hiragana() text, cursor = self.__preedit_ja_string.get_hiragana(True) elif self.__convert_mode == CONV_MODE_KATAKANA: # text, cursor = self.__preedit_ja_string.get_katakana() text, cursor = self.__preedit_ja_string.get_katakana(True) elif self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: # text, cursor = self.__preedit_ja_string.get_half_width_katakana() text, cursor = self.__preedit_ja_string.get_half_width_katakana(True) elif self.__convert_mode == CONV_MODE_LATIN_0: text, cursor = self.__preedit_ja_string.get_latin() if text == text.lower(): self.__convert_mode = CONV_MODE_LATIN_1 elif self.__convert_mode == CONV_MODE_LATIN_1: text, cursor = self.__preedit_ja_string.get_latin() text = text.lower() elif self.__convert_mode == CONV_MODE_LATIN_2: text, cursor = self.__preedit_ja_string.get_latin() text = text.upper() elif self.__convert_mode == CONV_MODE_LATIN_3: text, cursor = self.__preedit_ja_string.get_latin() text = text.capitalize() elif self.__convert_mode == CONV_MODE_WIDE_LATIN_0: text, cursor = self.__preedit_ja_string.get_wide_latin() if text == text.lower(): self.__convert_mode = CONV_MODE_WIDE_LATIN_1 elif self.__convert_mode == CONV_MODE_WIDE_LATIN_1: text, cursor = self.__preedit_ja_string.get_wide_latin() text = text.lower() elif self.__convert_mode == CONV_MODE_WIDE_LATIN_2: text, cursor = self.__preedit_ja_string.get_wide_latin() text = text.upper() elif self.__convert_mode == CONV_MODE_WIDE_LATIN_3: text, cursor = self.__preedit_ja_string.get_wide_latin() text = text.capitalize() self.__convert_chars = text attrs = IBus.AttrList() attrs.append(IBus.attr_underline_new( IBus.AttrUnderline.SINGLE, 0, len(text))) attrs.append(IBus.attr_background_new(self.__rgb(200, 200, 240), 0, len(text))) attrs.append(IBus.attr_foreground_new(self.__rgb(0, 0, 0), 0, len(text))) self.update_preedit(text, attrs, len(text), True) self.update_aux_string(u'', IBus.AttrList(), self.__lookup_table_visible) self.update_lookup_table(self.__lookup_table, self.__lookup_table_visible) def __update_anthy_convert_chars(self): self.__convert_chars = u'' pos = 0 for i, (seg_index, text) in enumerate(self.__segments): self.__convert_chars += text if i < self.__cursor_pos: pos += len(text) attrs = IBus.AttrList() attrs.append(IBus.attr_underline_new( IBus.AttrUnderline.SINGLE, 0, len(self.__convert_chars))) attrs.append(IBus.attr_background_new(self.__rgb(200, 200, 240), pos, pos + len(self.__segments[self.__cursor_pos][1]))) attrs.append(IBus.attr_foreground_new(self.__rgb(0, 0, 0), pos, pos + len(self.__segments[self.__cursor_pos][1]))) self.update_preedit(self.__convert_chars, attrs, pos, True) aux_string = u'( %d / %d )' % (self.__lookup_table.get_cursor_pos() + 1, self.__lookup_table.get_number_of_candidates()) self.update_aux_string(aux_string, IBus.AttrList(), self.__lookup_table_visible) self.update_lookup_table(self.__lookup_table, self.__lookup_table_visible) def __update(self): if self.__convert_mode == CONV_MODE_OFF: self.__update_input_chars() else: self.__update_convert_chars() self.__idle_id = 0 if self.__osk_mode and self.__selected_preedit_commit: self.__on_key_return() self.__selected_preedit_commit = False def __on_key_return(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_OFF: # text, cursor = self.__get_preedit() text, cursor = self.__get_preedit(True) self.__commit_string(text) elif self.__convert_mode == CONV_MODE_ANTHY: for i, (seg_index, text) in enumerate(self.__segments): self.__context.commit_segment(i, seg_index) self.__commit_string(self.__convert_chars) elif self.__convert_mode == CONV_MODE_PREDICTION: self.__context.commit_prediction(self.__segments[0][0]) self.__commit_string(self.__convert_chars) else: self.__commit_string(self.__convert_chars) return True def __on_key_escape(self): if self.__preedit_ja_string.is_empty(): return False self.__reset() self.__invalidate() return True def __on_key_back_space(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode != CONV_MODE_OFF: if self.__lookup_table_visible: if self.__lookup_table.get_number_of_candidates() > 0: self.__lookup_table.set_cursor_pos(0) candidate = UN(self.__lookup_table.get_candidate(0).get_text()) self.__segments[self.__cursor_pos] = 0, candidate if not self.__osk_mode: self.__lookup_table_visible = False elif self.__segments[self.__cursor_pos][0] != \ NTH_UNCONVERTED_CANDIDATE: buf = self.__context.get_segment(self.__cursor_pos, NTH_UNCONVERTED_CANDIDATE) self.__segments[self.__cursor_pos] = \ NTH_UNCONVERTED_CANDIDATE, UN(buf) #elif self._chk_mode('25'): ''' # FIXME: Delete the last char in the active segment. # # If we are able to delete a char in the active segment, # we also should be able to add a char in the active segment. # Currently plain preedit, no segment mode, i.e. # using self.__preedit_ja_string, can delete or add a char # but anthy active segoment mode, i.e. # using self.__segments, can not delete or add a char. # Deleting a char could be easy here but adding a char is # difficult because we need to update both self.__segments # and self.__preedit_ja_string but self.__preedit_ja_string # has no segment. To convert self.__segments to # self.__preedit_ja_string, we may use the reconvert mode # but no idea to convert keyvals to hiragana # in self__on_key_common() with multiple key typings. # Delete a char in the active segment all_text = u'' nr_segments = self.__context.get_nr_segments() for i in xrange(0, nr_segments): buf = self.__context.get_segment(i, NTH_UNCONVERTED_CANDIDATE) text = UN(buf) if i == self.__cursor_pos and len(text) > 0: text = text[:len(text) - 1] all_text += text if all_text == u'': return # Set self.__preedit_ja_string by anthy context. self.__preedit_ja_string = jastring.JaString(Engine.__typing_mode, self.__latin_with_shift) self.__convert_chars = self.__normalize_preedit(all_text) for i in xrange(0, len(self.__convert_chars)): keyval = self.__convert_chars[i] self.__preedit_ja_string.insert(unichr(ord (keyval))) self.__context.set_string(self.__convert_chars.encode('utf8')) # Set self.__segments by anty context # for editable self.__segments, # save NTH_UNCONVERTED_CANDIDATE nr_segments = self.__context.get_nr_segments() if self.__cursor_pos >= nr_segments and \ nr_segments > 0: self.__cursor_pos = nr_segments - 1 for i in xrange(self.__cursor_pos, nr_segments): if i == self.__cursor_pos: index = NTH_UNCONVERTED_CANDIDATE else: index = 0 buf = self.__context.get_segment(i, index) text = UN(buf) self.__segments[i] = index, text # Update self.__lookup_table self.__fill_lookup_table() ''' else: self.__end_convert() else: self.__preedit_ja_string.remove_before() self.__invalidate() return True def __on_key_delete(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode != CONV_MODE_OFF: self.__end_convert() else: self.__preedit_ja_string.remove_after() self.__invalidate() return True '''def __on_key_hiragana_katakana(self): if self.__convert_mode == CONV_MODE_ANTHY: self.__end_anthy_convert() if Engine.__input_mode >= INPUT_MODE_HIRAGANA and \ Engine.__input_mode < INPUT_MODE_HALF_WIDTH_KATAKANA: Engine.__input_mode += 1 else: Engine.__input_mode = INPUT_MODE_HIRAGANA modes = { INPUT_MODE_HIRAGANA: 'あ', INPUT_MODE_KATAKANA: 'ア', INPUT_MODE_HALF_WIDTH_KATAKANA: '_ア' } prop = self.__prop_dict[u'InputMode'] label = modes[Engine.__input_mode] prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__invalidate() return True''' '''def __on_key_muhenka(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__end_anthy_convert() new_mode = CONV_MODE_HIRAGANA if self.__convert_mode < CONV_MODE_WIDE_LATIN_3 and \ self.__convert_mode >= CONV_MODE_HIRAGANA : self.__convert_mode += 1 else: self.__convert_mode = CONV_MODE_HIRAGANA self.__invalidate() return True''' '''def __on_key_henkan(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode != CONV_MODE_ANTHY: self.__begin_anthy_convert() self.__invalidate() elif self.__convert_mode == CONV_MODE_ANTHY: self.__lookup_table_visible = True self.do_cursor_down() return True''' '''def __on_key_space(self, wide=False): if Engine.__input_mode == INPUT_MODE_WIDE_LATIN or wide: # Input Wide space U+3000 wide_char = symbol_rule[unichr(IBus.KEY_space)] self.__commit_string(wide_char) return True if self.__preedit_ja_string.is_empty(): if Engine.__input_mode in (INPUT_MODE_HIRAGANA, INPUT_MODE_KATAKANA): # Input Wide space U+3000 wide_char = symbol_rule[unichr(IBus.KEY_space)] self.__commit_string(wide_char) return True else: # Input Half space U+0020 self.__commit_string(unichr(IBus.KEY_space)) return True if self.__convert_mode != CONV_MODE_ANTHY: self.__begin_anthy_convert() self.__invalidate() elif self.__convert_mode == CONV_MODE_ANTHY: self.__lookup_table_visible = True self.do_cursor_down() return True''' def __on_key_up(self): if self.__preedit_ja_string.is_empty(): return False self.__lookup_table_visible = True self.do_cursor_up() return True def __on_key_down(self): if self.__preedit_ja_string.is_empty(): return False self.__lookup_table_visible = True self.do_cursor_down() return True def __on_key_page_up(self): if self.__preedit_ja_string.is_empty(): return False if self.__lookup_table_visible == True: self.__page_up(self) return True def __on_key_page_down(self): if self.__preedit_ja_string.is_empty(): return False if self.__lookup_table_visible == True: self.__page_down(self) return True '''def __on_key_left(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_OFF: self.__preedit_ja_string.move_cursor(-1) self.__invalidate() return True if self.__convert_mode != CONV_MODE_ANTHY: return True if self.__cursor_pos == 0: return True self.__cursor_pos -= 1 self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True''' def __on_key_right(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_OFF: self.__preedit_ja_string.move_cursor(1) self.__invalidate() return True if self.__convert_mode != CONV_MODE_ANTHY: return True if self.__cursor_pos + 1 >= len(self.__segments): return True self.__cursor_pos += 1 if not self.__osk_mode: self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def __on_key_number(self, keyval): if self.__convert_mode != CONV_MODE_ANTHY: return False if not self.__lookup_table_visible: return False if keyval == IBus.KEY_0: keyval = IBus.KEY_9 + 1 index = keyval - IBus.KEY_1 return self.__on_candidate_index_in_page(index) def __on_key_conv(self, mode): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__end_anthy_convert() if mode == 0 or mode == 1: if self.__convert_mode == CONV_MODE_HIRAGANA + mode: return True self.__convert_mode = CONV_MODE_HIRAGANA + mode elif mode == 2: if self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: return True self.__convert_mode = CONV_MODE_HALF_WIDTH_KATAKANA elif mode == 3: if CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3: self.__convert_mode += 1 if self.__convert_mode > CONV_MODE_WIDE_LATIN_3: self.__convert_mode = CONV_MODE_WIDE_LATIN_1 else: self.__convert_mode = CONV_MODE_WIDE_LATIN_0 elif mode == 4: if CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: self.__convert_mode += 1 if self.__convert_mode > CONV_MODE_LATIN_3: self.__convert_mode = CONV_MODE_LATIN_1 else: self.__convert_mode = CONV_MODE_LATIN_0 else: printerr('Unkown convert mode (%d)!' % mode) return False self.__invalidate() return True def __on_key_common(self, keyval, state=0): # If use-system-layout is FALSE in ibus 1.4.y or lower, # ibus converts the keymap and ibus-anthy needed to use # self.__commit_string # ibus 1.5.y uses XKB directly so Latin mode can return FALSE. if Engine.__input_mode == INPUT_MODE_LATIN: return False elif Engine.__input_mode == INPUT_MODE_WIDE_LATIN: # Input Wide Latin chars char = unichr(keyval) wide_char = None#symbol_rule.get(char, None) if wide_char == None: wide_char = unichar_half_to_full(char) self.__commit_string(wide_char) return True # Input Japanese if Engine.__segment_mode & SEGMENT_IMMEDIATE: # Commit nothing pass elif self.__convert_mode == CONV_MODE_ANTHY: for i, (seg_index, text) in enumerate(self.__segments): self.__context.commit_segment(i, seg_index) self.__commit_string(self.__convert_chars) elif self.__convert_mode != CONV_MODE_OFF: self.__commit_string(self.__convert_chars) # 'n' + '\'' == 'nn' in romaji if (keyval >= ord('A') and keyval <= ord('Z')) or \ (keyval >= ord('a') and keyval <= ord('z')): shift = (state & IBus.ModifierType.SHIFT_MASK) != 0 else: shift = False self.__preedit_ja_string.set_shift(shift) self.__preedit_ja_string.insert(unichr(keyval)) if Engine.__segment_mode & SEGMENT_IMMEDIATE: self.__begin_anthy_convert() self.__invalidate() return True #======================================================================= @classmethod def CONFIG_RELOADED(cls): if config.DEBUG: print 'RELOADED' if not cls.__prefs: cls.__prefs = AnthyPrefs() cls.__prefs.connect('changed', cls.CONFIG_VALUE_CHANGED) cls._init_prefs() cls.__keybind = cls._mk_keybind() jastring.JaString.SET_PREFS(cls.__prefs) @classmethod def CONFIG_VALUE_CHANGED(cls, prefs, section, key, variant): if config.DEBUG: print('VALUE_CHAMGED =', section, key, variant) if section == 'shortcut': cls.__keybind = cls._mk_keybind() elif section == 'common': if key == 'shortcut-type': cls.__keybind = cls._mk_keybind() elif key == 'latin-with-shift': value = prefs.get_value(section, key) cls.__latin_with_shift = value jastring.JaString.RESET(cls.__prefs, section, key, value) elif section == 'kana-typing-rule': value = prefs.get_value(section, key) jastring.JaString.RESET(cls.__prefs, section, key, value) @classmethod def _init_prefs(cls): prefs = cls.__prefs value = prefs.get_value('common', 'latin-with-shift') cls.__latin_with_shift = value @classmethod def _mk_keybind(cls): keybind = {} sec = cls._get_shortcut_type() shortcuts = cls.__prefs.get_value('shortcut', sec) for k in shortcuts.keys(): cmd = '_Engine__cmd_' + k for s in shortcuts[k]: keybind.setdefault(cls._s_to_key(s), []).append(cmd) return keybind @classmethod def _get_shortcut_type(cls): try: t = cls.__prefs.get_value('common', 'shortcut-type') except: t = 'default' return t @classmethod def _s_to_key(cls, s): keyval = IBus.keyval_from_name(s.split('+')[-1]) s = s.lower() state = ('shift+' in s and IBus.ModifierType.SHIFT_MASK or 0) | ( 'ctrl+' in s and IBus.ModifierType.CONTROL_MASK or 0) | ( 'alt+' in s and IBus.ModifierType.MOD1_MASK or 0) return cls._mk_key(keyval, state) @classmethod def _reset_thumb(cls): if cls.__thumb == None: import thumb cls.__thumb = thumb.ThumbShiftKeyboard(cls.__prefs) else: cls.__thumb.reset() @staticmethod def _mk_key(keyval, state): if state & (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK): if keyval < 0xff and \ unichr(keyval) in u'!"#$%^\'()*+,-./:;<=>?@[\\]^_`{|}~': state |= IBus.ModifierType.SHIFT_MASK elif IBus.KEY_a <= keyval <= IBus.KEY_z: keyval -= (IBus.KEY_a - IBus.KEY_A) return repr([int(state), int(keyval)]) def __process_key_event(self, obj, keyval, keycode, state): try: return self.__process_key_event_internal2(keyval, keycode, state) except: import traceback traceback.print_exc() return False def __process_key_event_thumb(self, keyval, keycode, state): if self.__thumb == None: self._reset_thumb() def on_timeout(keyval): if self._MM: insert(self.__thumb.get_char(self._MM)[self._SS]) else: cmd_exec([0, RS(), LS()][self._SS]) self._H = None def start(t): self._H = GLib.timeout_add(t, on_timeout, keyval) def stop(): if self._H: GLib.source_remove(self._H) self._H = None return True return False def insert(keyval): try: self._MM = self._SS = 0 ret = self.__on_key_common(ord(keyval)) if (keyval in UN(self.__prefs.get_value('common', 'trigger-periods'))): behavior = self.__prefs.get_value('common', 'behavior-on-period') if behavior == 1: return self.__cmd_convert(keyval, state) elif behavior == 2: return self.__cmd_commit(keyval, state) return ret except: pass def cmd_exec(keyval, state=0): key = self._mk_key(keyval, state) for cmd in self.__keybind.get(key, []): if config.DEBUG: print 'cmd =', cmd try: if getattr(self, cmd)(keyval, state): return True except Exception as err: printerr('Error command: %s: %s' % (cmd, str(err))) return False def RS(): return self.__thumb.get_rs() def LS(): return self.__thumb.get_ls() def T1(): return self.__thumb.get_t1() def T2(): return self.__thumb.get_t2() state = state & (IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK | IBus.ModifierType.RELEASE_MASK) if keyval in KP_Table and self.__prefs.get_value('common', 'ten-key-mode'): keyval = KP_Table[keyval] if state & IBus.ModifierType.RELEASE_MASK: if keyval == self._MM: if stop(): insert(self.__thumb.get_char(self._MM)[self._SS]) self._MM = 0 elif (1 if keyval == RS() else 2) == self._SS: if stop(): cmd_exec([0, RS(), LS()][self._SS]) self._SS = 0 if keyval in [RS(), LS()]: self._RSS = 0 elif keyval == self._RMM: self._RMM = 0 else: if keyval in [LS(), RS()] and state == 0: if self._SS: stop() cmd_exec([0, RS(), LS()][self._SS]) self._SS = 1 if keyval == RS() else 2 start(T1()) elif self._MM: stop() self._RMM = self._MM self._RSS = 1 if keyval == RS() else 2 insert(self.__thumb.get_char(self._MM)[1 if keyval == RS() else 2]) else: if self._RSS == (1 if keyval == RS() else 2): if self._RMM: insert(self.__thumb.get_char(self._RMM)[self._RSS]) else: self._SS = 1 if keyval == RS() else 2 start(T1()) elif keyval in self.__thumb.get_chars() and state == 0: if self._MM: stop() insert(self.__thumb.get_char(self._MM)[self._SS]) start(T2()) self._MM = keyval elif self._SS: stop() self._RMM = keyval self._RSS = self._SS insert(self.__thumb.get_char(keyval)[self._SS]) else: if self._RMM == keyval: if self._RSS: insert(self.__thumb.get_char(self._RMM)[self._RSS]) else: if cmd_exec(keyval, state): return True start(T2()) self._MM = keyval else: if self._MM: stop() insert(self.__thumb.get_char(self._MM)[self._SS]) elif self._SS: stop() cmd_exec([0, RS(), LS()][self._SS]) if cmd_exec(keyval, state): return True elif 0x21 <= keyval <= 0x7e and state & \ (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK) == 0: if state & IBus.ModifierType.SHIFT_MASK: insert(self.__thumb.get_shift_char(keyval, unichr(keyval))) elif self._SS == 0: insert(unichr(keyval)) else: if not self.__preedit_ja_string.is_empty(): return True return False return True def __process_key_event_internal2(self, keyval, keycode, state): if self.__has_input_purpose and \ self.__input_purpose == IBus.InputPurpose.PASSWORD: return False if Engine.__typing_mode == jastring.TYPING_MODE_THUMB_SHIFT and \ Engine.__input_mode not in [INPUT_MODE_LATIN, INPUT_MODE_WIDE_LATIN]: return self.__process_key_event_thumb(keyval, keycode, state) is_press = (state & IBus.ModifierType.RELEASE_MASK) == 0 state = state & (IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK | IBus.ModifierType.MOD4_MASK) # ignore key release events if not is_press: return False if keyval in KP_Table and self.__prefs.get_value('common', 'ten-key-mode'): keyval = KP_Table[keyval] key = self._mk_key(keyval, state) for cmd in self.__keybind.get(key, []): if config.DEBUG: print 'cmd =', cmd try: if getattr(self, cmd)(keyval, state): return True except Exception as err: printerr('Error command: %s: %s' % (cmd, str(err))) # If input mode is not LATIN, eat Ctrl+Shift+u hex_mod_mask = IBus.ModifierType.SHIFT_MASK | \ IBus.ModifierType.CONTROL_MASK if Engine.__input_mode != INPUT_MODE_LATIN and \ keyval == IBus.KEY_U and \ state & hex_mod_mask == hex_mod_mask: return True if state & (IBus.ModifierType.CONTROL_MASK | \ IBus.ModifierType.MOD1_MASK | \ IBus.ModifierType.MOD4_MASK): return False if (IBus.KEY_exclam <= keyval <= IBus.KEY_asciitilde or keyval == IBus.KEY_yen): if Engine.__typing_mode == jastring.TYPING_MODE_KANA: if keyval == IBus.KEY_0 and state == IBus.ModifierType.SHIFT_MASK: keyval = IBus.KEY_asciitilde elif keyval == IBus.KEY_backslash and keycode in [132-8, 133-8]: keyval = IBus.KEY_yen ret = self.__on_key_common(keyval, state) if (Engine.__input_mode != INPUT_MODE_LATIN and unichr(keyval) in UN(self.__prefs.get_value('common', 'trigger-periods'))): behavior = self.__prefs.get_value('common', 'behavior-on-period') if behavior == 1: return self.__cmd_convert(keyval, state) elif behavior == 2: return self.__cmd_commit(keyval, state) return ret else: if not self.__preedit_ja_string.is_empty(): return True return False def _chk_mode(self, mode): if '0' in mode and self.__preedit_ja_string.is_empty(): return True if self.__convert_mode == CONV_MODE_OFF: if '1' in mode and not self.__preedit_ja_string.is_empty(): return True elif self.__convert_mode == CONV_MODE_ANTHY: if '2' in mode and not self.__lookup_table_visible: return True elif self.__convert_mode == CONV_MODE_PREDICTION: if '3' in mode and not self.__lookup_table_visible: return True else: if '4' in mode: return True if '5' in mode and self.__lookup_table_visible: return True return False def __get_quoted_id(self, file): id = file has_mbcs = False for i in xrange(0, len(id)): if ord(id[i]) >= 0x7f: has_mbcs = True break if has_mbcs: id = id.encode('hex') if id.find('/') >=0: id = id[id.rindex('/') + 1:] if id.find('.') >=0: id = id[:id.rindex('.')] if id.startswith('0x'): id = id.encode('hex') has_mbcs = True if has_mbcs: id = '0x' + id return id def __get_dict_id_from_file(self, file): return self.__get_quoted_id(file) def __link_dict_file_with_mode(self, id, file, link_mode): if id == None: return if link_mode == LINK_DICT_EMBEDDED: directory = ANTHY_CONFIG_PATH + '/' + IMPORTED_EMBEDDED_DICT_DIR name = IMPORTED_EMBEDDED_DICT_PREFIX + id elif link_mode == LINK_DICT_SINGLE: directory = ANTHY_CONFIG_PATH name = IMPORTED_SINGLE_DICT_PREFIX + id else: return if path.exists(directory): if not path.isdir(directory): printerr(directory + ' is not a directory') return else: os.makedirs(directory, 0700) backup_dir = os.getcwd() os.chdir(directory) if path.lexists(directory + '/' + name): if path.islink(directory + '/' + name): printerr('Removing ' + name) os.unlink(directory + '/' + name) else: alternate = name + str(os.getpid()) printerr('Moving ' + name + ' to ' + alternate) os.rename(name, alternate) os.symlink(file, directory + '/' + name) if backup_dir != None: os.chdir(backup_dir) def __remove_dict_file_with_mode(self, id, file, link_mode): if id == None: return if link_mode == LINK_DICT_EMBEDDED: directory = ANTHY_CONFIG_PATH + '/' + IMPORTED_EMBEDDED_DICT_DIR name = IMPORTED_EMBEDDED_DICT_PREFIX + id elif link_mode == LINK_DICT_SINGLE: directory = ANTHY_CONFIG_PATH name = IMPORTED_SINGLE_DICT_PREFIX + id else: return if path.exists(directory): if not path.isdir(directory): printerr(directory + ' is not a directory') return backup_dir = os.getcwd() os.chdir(directory) if path.lexists(directory + '/' + name): os.unlink(directory + '/' + name) if backup_dir != None: os.chdir(backup_dir) def __link_dict_file(self, dict_item, file): if not path.exists(file): printerr(file + ' does not exist') return False id = dict_item.id if dict_item.embed: self.__link_dict_file_with_mode(id, file, LINK_DICT_EMBEDDED) if dict_item.single: self.__link_dict_file_with_mode(id, file, LINK_DICT_SINGLE) return True def __remove_dict_file(self, dict_item, file): id = dict_item.id if dict_item.embed: self.__remove_dict_file_with_mode(id, file, LINK_DICT_EMBEDDED) if dict_item.single: self.__remove_dict_file_with_mode(id, file, LINK_DICT_SINGLE) #mod_keys def __set_input_mode(self, mode): self.__input_mode_activate(mode, IBus.PropState.CHECKED) self.__reset() self.__invalidate() return True def __unset_current_input_mode(self): modes = { INPUT_MODE_HIRAGANA: u'InputMode.Hiragana', INPUT_MODE_KATAKANA: u'InputMode.Katakana', INPUT_MODE_HALF_WIDTH_KATAKANA: u'InputMode.HalfWidthKatakana', INPUT_MODE_LATIN: u'InputMode.Latin', INPUT_MODE_WIDE_LATIN: u'InputMode.WideLatin' } self.__input_mode_activate(modes[Engine.__input_mode], IBus.PropState.UNCHECKED) def __cmd_on_off(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() if Engine.__input_mode == INPUT_MODE_LATIN: return self.__set_input_mode(u'InputMode.Hiragana') else: return self.__set_input_mode(u'InputMode.Latin') def __cmd_circle_input_mode(self, keyval, state): modes = { INPUT_MODE_HIRAGANA: u'InputMode.Katakana', INPUT_MODE_KATAKANA: u'InputMode.HalfWidthKatakana', INPUT_MODE_HALF_WIDTH_KATAKANA: u'InputMode.Latin', INPUT_MODE_LATIN: u'InputMode.WideLatin', INPUT_MODE_WIDE_LATIN: u'InputMode.Hiragana' } # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(modes[Engine.__input_mode]) def __cmd_circle_kana_mode(self, keyval, state): modes = { INPUT_MODE_HIRAGANA: u'InputMode.Katakana', INPUT_MODE_KATAKANA: u'InputMode.HalfWidthKatakana', INPUT_MODE_HALF_WIDTH_KATAKANA: u'InputMode.Hiragana', INPUT_MODE_LATIN: u'InputMode.Hiragana', INPUT_MODE_WIDE_LATIN: u'InputMode.Hiragana' } # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(modes[Engine.__input_mode]) def __cmd_latin_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(u'InputMode.Latin') def __cmd_wide_latin_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(u'InputMode.WideLatin') def __cmd_hiragana_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(u'InputMode.Hiragana') def __cmd_katakana_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(u'InputMode.Katakana') def __cmd_half_katakana(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(u'InputMode.HalfWidthKatakana') # def __cmd_cancel_pseudo_ascii_mode_key(self, keyval, state): # pass def __unset_current_typing_mode(self): modes = { jastring.TYPING_MODE_ROMAJI: u'TypingMode.Romaji', jastring.TYPING_MODE_KANA: u'TypingMode.Kana', jastring.TYPING_MODE_THUMB_SHIFT: u'TypingMode.ThumbShift', } self.__typing_mode_activate(modes[Engine.__typing_mode], IBus.PropState.UNCHECKED) def __cmd_circle_typing_method(self, keyval, state): if not self._chk_mode('0'): return False modes = { jastring.TYPING_MODE_THUMB_SHIFT: u'TypingMode.Romaji', jastring.TYPING_MODE_KANA: u'TypingMode.ThumbShift', jastring.TYPING_MODE_ROMAJI: u'TypingMode.Kana', } # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_typing_mode() self.__typing_mode_activate(modes[Engine.__typing_mode], IBus.PropState.CHECKED) return True def __cmd_circle_dict_method(self, keyval, state): if not self._chk_mode('0'): return False # ibus 1.5 or later needs to send UNCHECKED prop_name = self.__dict_mode_get_prop_name(Engine.__dict_mode) if prop_name != None: self.__dict_mode_activate(prop_name, IBus.PropState.UNCHECKED) single_files = self.__get_single_dict_files() new_mode = Engine.__dict_mode + 1 if new_mode > len(single_files): new_mode = 0 Engine.__dict_mode = new_mode prop_name = self.__dict_mode_get_prop_name(Engine.__dict_mode) if prop_name == None: return False self.__dict_mode_activate(prop_name, IBus.PropState.CHECKED) return True #edit_keys def __cmd_insert_space(self, keyval, state): if Engine.__input_mode == INPUT_MODE_LATIN: return False if (self.__prefs.get_value('common', 'half-width-space') or Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA): return self.__cmd_insert_half_space(keyval, state) else: return self.__cmd_insert_wide_space(keyval, state) def __cmd_insert_alternate_space(self, keyval, state): if Engine.__input_mode == INPUT_MODE_LATIN: return False if (self.__prefs.get_value('common', 'half-width-space') or Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA): return self.__cmd_insert_wide_space(keyval, state) else: return self.__cmd_insert_half_space(keyval, state) def __cmd_insert_half_space(self, keyval, state): if not self._chk_mode('0'): return False if not self.__preedit_ja_string.is_empty(): return False self.__commit_string(unichr(IBus.KEY_space)) return True def __cmd_insert_wide_space(self, keyval, state): if not self._chk_mode('0'): return False if not self.__preedit_ja_string.is_empty(): return False char = unichr(IBus.KEY_space) wide_char = symbol_rule.get(char, None) if wide_char == None: wide_char = unichar_half_to_full(char) self.__commit_string(wide_char) return True def __cmd_backspace(self, keyval, state): if not self._chk_mode('12345'): return False return self.__on_key_back_space() def __cmd_delete(self, keyval, state): if not self._chk_mode('12345'): return False return self.__on_key_delete() def __cmd_commit(self, keyval, state): if not self._chk_mode('12345'): return False return self.__on_key_return() def __cmd_convert(self, keyval, state): if not self._chk_mode('14'): return False self.__begin_anthy_convert() self.__invalidate() return True def __cmd_predict(self, keyval, state): if not self._chk_mode('14'): return False text, cursor = self.__preedit_ja_string.get_hiragana(True) self.__context.set_prediction_string(text.encode('utf8')) nr_predictions = self.__context.get_nr_predictions() # for i in range(nr_predictions): # print self.__context.get_prediction(i) buf = self.__context.get_prediction(0) if not buf: return False text = UN(buf) self.__segments.append((0, text)) self.__convert_mode = CONV_MODE_PREDICTION self.__cursor_pos = 0 self.__fill_lookup_table() if self.__osk_mode: self.__lookup_table_visible = True else: self.__lookup_table_visible = False self.__invalidate() return True def __cmd_cancel(self, keyval, state): return self.__cmd_cancel_all(keyval, state) def __cmd_cancel_all(self, keyval, state): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_OFF: return self.__on_key_escape() else: self.__end_convert() self.__invalidate() return True def __cmd_escape_to_latin(self, keyval, state): """ Vi-cooperative variant of cancel_all. When Vi users press Escape, they expect to return to Normal mode where an IME would not make sense. This command automatically switches back to Latin when sending Escape. When converting, Escape will cancel the conversion instead. """ if self._chk_mode('0'): if Engine.__input_mode != INPUT_MODE_LATIN: self.__cmd_latin_mode(keyval, state) return False else: return self.__cmd_cancel_all(keyval, state) def __cmd_reconvert(self, keyval, state): if not self.__preedit_ja_string.is_empty(): # if user has inputed some chars return False # Move importing Gtk into Engine from the header # because ibus-engine-anthy --xml does not requre to open X. try: from gi.repository import Gtk clipboard_get = Gtk.Clipboard.get except ImportError: clipboard_get = lambda a : None except RuntimeError: # Do we support the engine without display? printerr("Gtk couldn't be initialized") printerr('Could not open display') clipboard_get = lambda a : None # Use Gtk.Clipboard.request_text() instead of # Gtk.Clipboard.wait_for_text() because DBus is timed out. clipboard = clipboard_get ('PRIMARY') if clipboard: clipboard.request_text (self.__get_clipboard, CLIPBOARD_RECONVERT) return True def __update_reconvert(self, clipboard_text): if clipboard_text == None: return False self.__convert_chars = UN(clipboard_text) for i in xrange(0, len(self.__convert_chars)): keyval = self.__convert_chars[i] self.__preedit_ja_string.insert(unichr(ord(keyval))) self.__context.set_string(self.__convert_chars.encode('utf-8')) nr_segments = self.__context.get_nr_segments() for i in xrange(0, nr_segments): buf = self.__context.get_segment(i, 0) text = UN(buf) self.__segments.append((0, text)) self.__convert_mode = CONV_MODE_ANTHY self.__cursor_pos = 0 self.__fill_lookup_table() if self.__osk_mode: self.__lookup_table_visible = True else: self.__lookup_table_visible = False self.__invalidate() return True # def __cmd_do_nothing(self, keyval, state): # return True #caret_keys def __move_caret(self, i): if not self._chk_mode('1'): return False if self.__convert_mode == CONV_MODE_OFF: self.__preedit_ja_string.move_cursor( -len(self.__preedit_ja_string.get_latin()[0]) if i == 0 else i if i in [-1, 1] else len(self.__preedit_ja_string.get_latin()[0])) self.__invalidate() return True return False def __cmd_move_caret_first(self, keyval, state): return self.__move_caret(0) def __cmd_move_caret_last(self, keyval, state): return self.__move_caret(2) def __cmd_move_caret_forward(self, keyval, state): return self.__move_caret(1) def __cmd_move_caret_backward(self, keyval, state): return self.__move_caret(-1) #segments_keys def __select_segment(self, i): if not self._chk_mode('25'): return False pos = 0 if i == 0 else \ self.__cursor_pos + i if i in [-1, 1] else \ len(self.__segments) - 1 if 0 <= pos < len(self.__segments) and pos != self.__cursor_pos: self.__cursor_pos = pos self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def __cmd_select_first_segment(self, keyval, state): return self.__select_segment(0) def __cmd_select_last_segment(self, keyval, state): return self.__select_segment(2) def __cmd_select_next_segment(self, keyval, state): return self.__select_segment(1) def __cmd_select_prev_segment(self, keyval, state): return self.__select_segment(-1) def __cmd_shrink_segment(self, keyval, state): if not self._chk_mode('25'): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__shrink_segment(-1) return True def __cmd_expand_segment(self, keyval, state): if not self._chk_mode('25'): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__shrink_segment(1) return True def __move_cursor_char_length(self, length): if Engine.__input_mode == INPUT_MODE_HIRAGANA: self.__preedit_ja_string.move_cursor_hiragana_length(length) elif Engine.__input_mode == INPUT_MODE_KATAKANA: self.__preedit_ja_string.move_cursor_katakana_length(length) elif Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA: self.__preedit_ja_string.move_cursor_half_with_katakana_length(length) else: self.__preedit_ja_string.move_cursor(length) def __commit_nth_segment(self, commit_index, keyval, state): if commit_index >= len(self.__segments): return False if self.__convert_mode == CONV_MODE_ANTHY: for i in xrange(0, commit_index + 1): (seg_index, text) = self.__segments[i] self.commit_text(IBus.Text.new_from_string(text)) text, cursor = self.__get_preedit() commit_length = 0 for i in xrange(0, commit_index + 1): buf = self.__context.get_segment(i, NTH_UNCONVERTED_CANDIDATE) commit_length += len(UN(buf)) self.__move_cursor_char_length(commit_length - cursor) for i in xrange(0, commit_length): self.__preedit_ja_string.remove_before() self.__move_cursor_char_length(cursor - commit_length) del self.__segments[0:commit_index + 1] if len(self.__segments) == 0: self.__reset() else: if self.__cursor_pos > commit_index: self.__cursor_pos -= (commit_index + 1) else: self.__cursor_pos = 0 text, cursor = self.__get_preedit() self.__convert_chars = text self.__context.set_string(text.encode('utf-8')) self.__lookup_table.clear() self.__lookup_table.set_cursor_visible(False) self.__lookup_table_visible = False self.update_aux_string(u'', IBus.AttrList(), self.__lookup_table_visible) self.__fill_lookup_table() self.__invalidate() self.__update_input_chars() return True def __cmd_commit_first_segment(self, keyval, state): return self.__commit_nth_segment(0, keyval, state) def __cmd_commit_selected_segment(self, keyval, state): return self.__commit_nth_segment(self.__cursor_pos, keyval, state) #candidates_keys def __on_candidate_index_in_page(self, index): if not self._chk_mode('5'): return False if index >= self.__lookup_table.get_page_size(): return False cursor_pos = self.__lookup_table.get_cursor_pos() cursor_in_page = self.__lookup_table.get_cursor_in_page() real_index = cursor_pos - cursor_in_page + index if real_index >= self.__lookup_table.get_number_of_candidates(): return False self.__lookup_table.set_cursor_pos(real_index) index = self.__lookup_table.get_cursor_pos() candidate = UN(self.__lookup_table.get_candidate(index).get_text()) self.__segments[self.__cursor_pos] = index, candidate if not self.__osk_mode: self.__lookup_table_visible = False self.__on_key_right() self.__invalidate() return True def __cmd_select_first_candidate(self, keyval, state): return self.__on_candidate_index_in_page(0) def __cmd_select_last_candidate(self, keyval, state): return self.__on_candidate_index_in_page( self.__lookup_table.get_page_size() - 1) def __cmd_select_next_candidate(self, keyval, state): if not self._chk_mode('235'): return False return self.__on_key_down() def __cmd_select_prev_candidate(self, keyval, state): if not self._chk_mode('235'): return False return self.__on_key_up() def __cmd_candidates_page_up(self, keyval, state): if not self._chk_mode('5'): return False return self.__on_key_page_up() def __cmd_candidates_page_down(self, keyval, state): if not self._chk_mode('5'): return False return self.__on_key_page_down() #direct_select_keys def __select_keyval(self, keyval): if not self._chk_mode('5'): return False return self.__on_key_number(keyval) def __cmd_select_candidates_1(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_2(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_3(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_4(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_5(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_6(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_7(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_8(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_9(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_0(self, keyval, state): return self.__select_keyval(keyval) #convert_keys def __cmd_convert_to_char_type_forward(self, keyval, state): if self.__convert_mode == CONV_MODE_ANTHY: n = self.__segments[self.__cursor_pos][0] if n == NTH_HIRAGANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_KATAKANA_CANDIDATE) elif n == NTH_KATAKANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) elif n == NTH_HALFKANA_CANDIDATE: return self.__convert_segment_to_latin(-100) elif n == -100: return self.__convert_segment_to_latin(-101) else: return self.__convert_segment_to_kana(NTH_HIRAGANA_CANDIDATE) if self.__convert_mode == CONV_MODE_KATAKANA: return self.__cmd_convert_to_half_katakana(keyval, state) elif self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: return self.__cmd_convert_to_latin(keyval, state) elif CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: return self.__cmd_convert_to_wide_latin(keyval, state) elif (CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3): return self.__cmd_convert_to_hiragana(keyval, state) else: return self.__cmd_convert_to_katakana(keyval, state) def __cmd_convert_to_char_type_backward(self, keyval, state): if self.__convert_mode == CONV_MODE_ANTHY: n = self.__segments[self.__cursor_pos][0] if n == NTH_KATAKANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_HIRAGANA_CANDIDATE) elif n == NTH_HALFKANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_KATAKANA_CANDIDATE) elif n == -100: return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) elif n == -101: return self.__convert_segment_to_latin(-100) else: return self.__convert_segment_to_latin(-101) if self.__convert_mode == CONV_MODE_KATAKANA: return self.__cmd_convert_to_hiragana(keyval, state) elif self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: return self.__cmd_convert_to_katakana(keyval, state) elif CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: return self.__cmd_convert_to_half_katakana(keyval, state) elif (CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3): return self.__cmd_convert_to_latin(keyval, state) else: return self.__cmd_convert_to_wide_latin(keyval, state) def __convert_segment_to_kana(self, n): if self.__convert_mode == CONV_MODE_ANTHY and -4 <= n <= -2: buf = self.__context.get_segment(self.__cursor_pos, n) self.__segments[self.__cursor_pos] = n, UN(buf) self.__lookup_table_visible = False self.__invalidate() return True return False def __convert_to_hiragana_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_HIRAGANA_CANDIDATE) return self.__on_key_conv(0) def __convert_to_katakana_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_KATAKANA_CANDIDATE) return self.__on_key_conv(1) def __convert_to_half_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: i, s = self.__segments[self.__cursor_pos] if i == -101: return self.__convert_segment_to_latin(-100) elif i == -100: return self.__convert_segment_to_latin(-100) if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) elif CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3: return self.__on_key_conv(4) elif CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: return self.__on_key_conv(4) return self.__on_key_conv(2) def __convert_to_half_katakana_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) return self.__on_key_conv(2) def __convert_segment_to_latin(self, n): if self.__convert_mode == CONV_MODE_ANTHY and n in [-100, -101]: start = 0 for i in range(self.__cursor_pos): start += len(UN(self.__context.get_segment(i, NTH_UNCONVERTED_CANDIDATE))) end = start + len(UN(self.__context.get_segment(self.__cursor_pos, NTH_UNCONVERTED_CANDIDATE))) i, s = self.__segments[self.__cursor_pos] s2 = self.__preedit_ja_string.get_raw(start, end) if n == -101: s2 = u''.join([unichar_half_to_full(c) for c in s2]) if i == n: if s == s2.lower(): s2 = s2.upper() elif s == s2.upper(): s2 = s2.capitalize() elif s == s2 or s == s2.capitalize(): s2 = s2.lower() self.__segments[self.__cursor_pos] = n, s2 self.__lookup_table_visible = False self.__invalidate() return True return False def __convert_to_wide_latin_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_latin(-101) return self.__on_key_conv(3) def __convert_to_latin_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_latin(-100) return self.__on_key_conv(4) def __cmd_convert_to_hiragana(self, keyval, state): return self.__convert_to_hiragana_internal(keyval, state, 0) def __cmd_convert_to_hiragana_all(self, keyval, state): return self.__convert_to_hiragana_internal(keyval, state, 1) def __cmd_convert_to_katakana(self, keyval, state): return self.__convert_to_katakana_internal(keyval, state, 0) def __cmd_convert_to_katakana_all(self, keyval, state): return self.__convert_to_katakana_internal(keyval, state, 1) def __cmd_convert_to_half(self, keyval, state): return self.__convert_to_half_internal(keyval, state, 0) def __cmd_convert_to_half_all(self, keyval, state): return self.__convert_to_half_internal(keyval, state, 1) def __cmd_convert_to_half_katakana(self, keyval, state): return self.__convert_to_half_katakana_internal(keyval, state, 0) def __cmd_convert_to_half_katakana_all(self, keyval, state): return self.__convert_to_half_katakana_internal(keyval, state, 1) def __cmd_convert_to_wide_latin(self, keyval, state): return self.__convert_to_wide_latin_internal(keyval, state, 0) def __cmd_convert_to_wide_latin_all(self, keyval, state): return self.__convert_to_wide_latin_internal(keyval, state, 1) def __cmd_convert_to_latin(self, keyval, state): return self.__convert_to_latin_internal(keyval, state, 0) def __cmd_convert_to_latin_all(self, keyval, state): return self.__convert_to_latin_internal(keyval, state, 1) #dictonary_keys def __cmd_dict_admin(self, keyval, state): if not self._chk_mode('0'): return False self.__start_dict_admin() return True def __cmd_add_word(self, keyval, state): if not self._chk_mode('0'): return False self.__start_add_word() return True def __cmd_start_setup(self, keyval, state): if not self._chk_mode('0'): return False self.__start_setup() return True def __start_dict_admin(self): command = self.__prefs.get_value('common', 'dict-admin-command') os.spawnl(os.P_NOWAIT, *command) def __start_add_word(self): command = self.__prefs.get_value('common', 'add-word-command') os.spawnl(os.P_NOWAIT, *command) def __start_setup(self): if Engine.__setup_pid != 0: pid, state = os.waitpid(Engine.__setup_pid, os.P_NOWAIT) if pid != Engine.__setup_pid: return Engine.__setup_pid = 0 setup_cmd = path.join(config.LIBEXECDIR, 'ibus-setup-anthy') Engine.__setup_pid = os.spawnl(os.P_NOWAIT, setup_cmd, 'ibus-setup-anthy') def __cmd_hiragana_for_latin_with_shift(self, keyval, state): self.__preedit_ja_string.set_hiragana_katakana(True) ibus-anthy-1.5.17/engine/python2/factory.py000066400000000000000000000053611475510605700206000ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import os import sys from gi import require_version as gi_require_version gi_require_version('IBus', '1.0') from gi.repository import IBus import _config as config import engine class EngineFactory(IBus.Factory): FACTORY_PATH = '/com/redhat/IBus/engines/Anthy/Factory' ENGINE_PATH = '/com/redhat/IBus/engines/Anthy/Engine' NAME = 'Anthy' LANG = 'ja' ICON = config.PKGDATADIR + '/icons/ibus-anthy.png' AUTHORS = 'Huang Peng ' CREDITS = 'GPLv2' def __init__(self, bus): self.__bus = bus engine.Engine.CONFIG_RELOADED() super(EngineFactory, self).__init__(object_path=IBus.PATH_FACTORY, connection=bus.get_connection()) self.__id = 0 bus.get_connection().signal_subscribe('org.freedesktop.DBus', 'org.freedesktop.DBus', 'NameOwnerChanged', '/org/freedesktop/DBus', None, 0, self.__name_owner_changed_cb, bus) def do_create_engine(self, engine_name): if engine_name == 'anthy': self.__id += 1 return engine.Engine(self.__bus, '%s/%d' % (self.ENGINE_PATH, self.__id)) return super(EngineFactory, self).do_create_engine(engine_name) def __name_owner_changed_cb(self, connection, sender_name, object_path, interface_name, signal_name, parameters, user_data): if signal_name == 'NameOwnerChanged': engine.Engine.CONFIG_RELOADED() ibus-anthy-1.5.17/engine/python2/ibus-engine-anthy.in000066400000000000000000000021711475510605700224310ustar00rootroot00000000000000#!/bin/sh # # vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-2016 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. export IBUS_PREFIX=@prefix@ export IBUS_ANTHY_PKGDATADIR=@datarootdir@/@PACKAGE@ export LIBEXECDIR=@libexecdir@ exec @ENV_IBUS_ENGINE@ @PYTHON@ @datarootdir@/@PACKAGE@/engine/main.py "$@" ibus-anthy-1.5.17/engine/python2/jastring.py000066400000000000000000000273541475510605700207600ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import romaji import kana import thumb from segment import unichar_half_to_full HalfSymbolTable = {} for i in range(32, 127): if not chr(i).isalnum(): HalfSymbolTable[unichar_half_to_full(chr(i))] = chr(i) HalfNumberTable = {} for i in range(10): HalfNumberTable[unichar_half_to_full(str(i))] = str(i) PeriodTable = {u'。': u'.', u'、': u',', u'。': u'.', u'、': u','} SymbolTable = {} SymbolTable[0] = {u'「': u'「', u'」': u'」', u'/': u'/'} SymbolTable[1] = {u'「': u'「', u'」': u'」', u'/': u'・'} SymbolTable[2] = {u'「': u'[', u'」': u']', u'/': u'/'} SymbolTable[3] = {u'「': u'[', u'」': u']', u'/': u'・'} TYPING_MODE_ROMAJI, \ TYPING_MODE_KANA, \ TYPING_MODE_THUMB_SHIFT = range(3) class JaString: _prefs = None _mode = TYPING_MODE_ROMAJI _shift = False _unshift = False def __init__(self, mode=TYPING_MODE_ROMAJI, latin_with_shift=True): self._init_mode(mode) if mode == TYPING_MODE_ROMAJI: romaji.RomajiSegment.SET_LATIN_WITH_SHIFT(latin_with_shift) @classmethod def _init_mode(cls, mode): cls._mode = mode cls._shift = False cls._unshift = False cls.__cursor = 0 cls.__segments = list() if mode == TYPING_MODE_ROMAJI: romaji.RomajiSegment.INIT_ROMAJI_TYPING_RULE(cls._prefs) elif mode == TYPING_MODE_KANA: kana.KanaSegment.INIT_KANA_TYPING_RULE(cls._prefs) elif mode == TYPING_MODE_THUMB_SHIFT: thumb.ThumbShiftSegment.INIT_THUMB_TYPING_RULE(cls._prefs) @classmethod def SET_PREFS(cls, prefs): cls._prefs = prefs @classmethod def RESET(cls, prefs, section, key, value): cls._prefs = prefs if section == 'kana-typing-rule': mode = TYPING_MODE_KANA kana.KanaSegment.RESET(prefs, section, key, value) cls._init_mode(mode) if section == 'common' and key == 'latin-with-shift': romaji.RomajiSegment.SET_LATIN_WITH_SHIFT(value) def set_shift(self, shift): self._shift = shift def set_hiragana_katakana(self, mode): if mode and self._mode == TYPING_MODE_ROMAJI: self._unshift = True def insert(self, c): segment_before = None segment_after = None new_segments = None if self.__cursor >= 1: segment_before = self.__segments[self.__cursor - 1] if self.__cursor < len(self.__segments): segment_after = self.__segments[self.__cursor] if segment_before and not segment_before.is_finished(): if type(segment_before) == romaji.RomajiSegment: new_segments = segment_before.append(c, self._shift, self._unshift) self._unshift = False else: new_segments = segment_before.append(c) elif segment_after and not segment_after.is_finished(): if type(segment_after) == romaji.RomajiSegment: new_segments = segment_after.prepend(c, self._shift, self._unshift) self._unshift = False else: new_segments = segment_after.prepend(c) else: if c != u'\0' and c != u'': if self._mode == TYPING_MODE_ROMAJI: new_segments = [romaji.RomajiSegment(c, u'', self._shift, self._unshift)] self._unshift = False elif self._mode == TYPING_MODE_KANA: # kana mode doesn't have shift latin in MS. new_segments = [kana.KanaSegment(c)] elif self._mode == TYPING_MODE_THUMB_SHIFT: new_segments = [thumb.ThumbShiftSegment(c)] if new_segments: self.__segments[self.__cursor:self.__cursor] = new_segments self.__cursor += len(new_segments) def remove_before(self): index = self.__cursor - 1 if index >= 0: segment = self.__segments[index] segment.pop() if segment.is_empty(): del self.__segments[index] self.__cursor = index return True return False def remove_after(self): index = self.__cursor if index < len(self.__segments): segment = self.__segments[index] segment.pop() if segment.is_empty(): del self.__segments[index] return True return False def get_string(self, type): pass def move_cursor(self, delta): self.__cursor += delta if self.__cursor < 0: self.__cursor = 0 elif self.__cursor > len(self.__segments): self.__cursor = len(self.__segments) # hiragana segments are not char lengths. # e.g. 'ya' is 1 segment and 1 char and 'kya' is 1 segment and 2 chars. def move_cursor_hiragana_length(self, length): delta = length if delta < 0: if self.__cursor >= len(self.__segments): delta = delta + (self.__cursor - len(self.__segments) + 1) self.__cursor = len(self.__segments) - 1 while delta < 0: text = unicode(self.__segments[self.__cursor].to_hiragana()) if len(text) > -delta: break delta = delta + len(text) self.__cursor = self.__cursor - 1 else: if self.__cursor >= len(self.__segments): self.__cursor = len(self.__segments) return while delta > 0: text = unicode(self.__segments[self.__cursor].to_hiragana()) if len(text) > delta: break delta = delta - len(text) self.__cursor = self.__cursor + 1 def move_cursor_katakana_length(self, length): delta = length if delta < 0: if self.__cursor >= len(self.__segments): delta = delta + (self.__cursor - len(self.__segments) + 1) self.__cursor = len(self.__segments) - 1 while delta < 0: text = unicode(self.__segments[self.__cursor].to_katanaka()) if len(text) > -delta: break delta = delta + len(text) self.__cursor = self.__cursor - 1 else: if self.__cursor >= len(self.__segments): self.__cursor = len(self.__segments) return while delta > 0: text = unicode(self.__segments[self.__cursor].to_katanaka()) if len(text) > delta: break delta = delta - len(text) self.__cursor = self.__cursor + 1 def move_cursor_half_with_katakana_length(self, length): delta = length if delta < 0: if self.__cursor >= len(self.__segments): delta = delta + (self.__cursor - len(self.__segments) + 1) self.__cursor = len(self.__segments) - 1 while delta < 0: text = unicode(self.__segments[self.__cursor].to_half_width_katakana()) if len(text) > -delta: break delta = delta + len(text) self.__cursor = self.__cursor - 1 else: if self.__cursor >= len(self.__segments): self.__cursor = len(self.__segments) return while delta > 0: text = unicode(self.__segments[self.__cursor].to_half_width_katakana()) if len(text) > delta: break delta = delta - len(text) self.__cursor = self.__cursor + 1 def _chk_text(self, s): period = self._prefs.get_value('common', 'period-style') symbol = self._prefs.get_value('common', 'symbol-style') half_symbol = self._prefs.get_value('common', 'half-width-symbol') half_number = self._prefs.get_value('common', 'half-width-number') ret = '' for c in s: c = c if not period else PeriodTable.get(c, c) # thumb_left + '2' and '/' are different if self._mode != TYPING_MODE_THUMB_SHIFT: c = c if not symbol else SymbolTable[symbol].get(c, c) c = c if not half_symbol else HalfSymbolTable.get(c, c) c = c if not half_number else HalfNumberTable.get(c, c) ret += c return ret def get_hiragana(self, commit=False): conv = lambda s: s.to_hiragana() R = lambda s: s if not (commit and s[-1:] == u'n') else s[:-1] + u'ん' text_before = R(u''.join(map(conv, self.__segments[:self.__cursor]))) text_after = R(u''.join(map(conv, self.__segments[self.__cursor:]))) return self._chk_text(text_before + text_after), len(text_before) def get_katakana(self, commit=False): conv = lambda s: s.to_katakana() R = lambda s: s if not (commit and s[-1:] == u'n') else s[:-1] + u'ン' text_before = R(u''.join(map(conv, self.__segments[:self.__cursor]))) text_after = R(u''.join(map(conv, self.__segments[self.__cursor:]))) return self._chk_text(text_before + text_after), len(text_before) def get_half_width_katakana(self, commit=False): conv = lambda s: s.to_half_width_katakana() R = lambda s: s if not (commit and s[-1:] == u'n') else s[:-1] + u'ン' text_before = R(u''.join(map(conv, self.__segments[:self.__cursor]))) text_after = R(u''.join(map(conv, self.__segments[self.__cursor:]))) return self._chk_text(text_before + text_after), len(text_before) def get_latin(self): conv = lambda s: s.to_latin() text_before = u''.join(map(conv, self.__segments[:self.__cursor])) text_after = u''.join(map(conv, self.__segments[self.__cursor:])) return text_before + text_after, len(text_before) def get_wide_latin(self): conv = lambda s: s.to_wide_latin() text_before = u''.join(map(conv, self.__segments[:self.__cursor])) text_after = u''.join(map(conv, self.__segments[self.__cursor:])) return text_before + text_after, len(text_before) def is_empty(self): return all(map(lambda s: s.is_empty(), self.__segments)) def get_raw(self, start, end): i = 0 r = u'' for s in self.__segments: if i >= end: break elif start <= i: r += s.to_latin() i += len(s.to_hiragana()) return r ibus-anthy-1.5.17/engine/python2/kana.py000066400000000000000000000141401475510605700200360ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys from tables import * import segment _UNFINISHED_HIRAGANA = set(u'かきくけこさしすせそたちつてとはひふへほ') class KanaSegment(segment.Segment): _prefs = None _kana_typing_rule_method = None _kana_voiced_consonant_rule = None _kana_voiced_consonant_dict = None def __init__(self, enchars=u'', jachars=u''): if not jachars: jachars = self.__get_kana_typing_rule(enchars, u'') super(KanaSegment, self).__init__(enchars, jachars) @classmethod def INIT_KANA_TYPING_RULE(cls, prefs): cls._prefs = prefs if prefs == None: cls._kana_typing_rule_method = None return if cls._kana_typing_rule_method == None: cls._init_kana_typing_method() if cls._kana_voiced_consonant_rule == None and \ cls._kana_typing_rule_method != None: cls._init_kana_voiced_consonant_rule() @classmethod def _init_kana_typing_method(cls, method=None): prefs = cls._prefs if method == None: method = prefs.get_value('kana-typing-rule', 'method') if method == None: method = 'jp' cls._kana_typing_rule_method = method keymap = prefs.get_value('kana-typing-rule', 'list') if cls._kana_typing_rule_method not in keymap.keys(): cls._kana_typing_rule_method = None @classmethod def _init_kana_voiced_consonant_rule(cls): prefs = cls._prefs # Create kana_voiced_consonant_rule dynamically. # E.g. 't' + '@' on jp kbd becomes Hiragana GA # 't' + '[' on us kbd becomes Hiragana GA # If the customized table provides U+309b with other chars, # it needs to be detected dynamically. cls._kana_voiced_consonant_rule = {} method = cls._kana_typing_rule_method keymap = prefs.get_value('kana-typing-rule', 'list')[method] for gkey in keymap.keys(): value = keymap[gkey] key = prefs.typing_from_config_key(gkey) if key == '': continue if value == unichr(0x309b).encode('utf-8'): for no_voiced, voiced in \ kana_voiced_consonant_no_rule.items(): rule = no_voiced + key.decode('utf-8') cls._kana_voiced_consonant_rule[rule] = voiced if value == unichr(0x309c).encode('utf-8'): for no_voiced, voiced in \ kana_semi_voiced_consonant_no_rule.items(): rule = no_voiced + key.decode('utf-8') cls._kana_voiced_consonant_rule[rule] = voiced @classmethod def RESET(cls, prefs, section, key, value): cls._prefs = prefs if section == 'kana-typing-rule' and value != None: cls._kana_typing_rule_method = None cls._kana_voiced_consonant_rule = None cls.INIT_KANA_TYPING_RULE(prefs) def __get_kana_typing_rule(self, enchars, retval=None): prefs = self._prefs value = None method = self._kana_typing_rule_method if method != None: # Need to send Unicode to typing_to_config_key instead of UTF-8 # not to separate U+A5 gkey = prefs.typing_to_config_key(enchars) if gkey == '': return None enchars = gkey keymap = prefs.get_value('kana-typing-rule', 'list')[method] value = prefs.unicode(keymap.get(enchars)) if value == '': value = None if value == None: value = retval else: value = kana_typing_rule_static.get(enchars, retval) return value def is_finished(self): return not (self._jachars in _UNFINISHED_HIRAGANA) def append(self, enchar): if enchar == u'\0' or enchar == u'': return [] if self._jachars: text = self._jachars + enchar if self._kana_voiced_consonant_rule != None: jachars = self._kana_voiced_consonant_rule.get(text, None) if jachars: self._enchars = self._enchars + enchar self._jachars = jachars return [] return [KanaSegment(enchar)] self._enchars = self._enchars + enchar self._jachars = self.__get_kana_typing_rule(self._enchars, u'') return [] def prepend(self, enchar): if enchar == u'\0' or enchar == u'': return [] if self._enchars == u'': self._enchars = enchar self._jachars = self.__get_kana_typing_rule(self._enchars, u'') return [] return [KanaSegment(enchar)] def pop(self, index=-1): if index == -1: index = len(self._enchars) - 1 if index < 0 or index >= len(self._enchars): raise IndexError('Out of bound') if self.is_finished(): self._enchars = u'' self._jachars = u'' else: enchars = list(self._enchars) del enchars[index] self._enchars = u''.join(enchars) self._jachars = self.__get_kana_typing_rule(self._enchars, u'') ibus-anthy-1.5.17/engine/python2/main.py000066400000000000000000000147611475510605700200610ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2025 Takao Fujiwara # Copyright (c) 2007-2016 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. import os from os import path import sys import getopt import locale import xml.dom.minidom from gi import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') from gi.repository import GLib # set_prgname before importing factory to show the name in warning # messages when import modules are failed. E.g. Gtk. GLib.set_prgname('ibus-engine-anthy') from gi.repository import IBus import _config as config # Need to call IBus.init() before IBus.EngineSimple() is loaded. # factory -> engine -> IBus.EngineSimple IBus.init() import factory class IMApp: def __init__(self, exec_by_ibus): command_line = config.LIBEXECDIR + '/ibus-engine-anthy --ibus' self.__component = IBus.Component(name='org.freedesktop.IBus.Anthy', description='Anthy Component', version='0.1.0', license='GPL', author='Peng Huang ', homepage='https://github.com/ibus/ibus/wiki', command_line=command_line, textdomain='ibus-anthy') engine = IBus.EngineDesc(name='anthy', longname='Anthy', description='Anthy Input Method', language='ja', license='GPL', author='Peng Huang ', icon='ibus-anthy', layout=config.LAYOUT, symbol=config.SYMBOL_CHAR, rank=99) self.__component.add_engine(engine) self.__mainloop = GLib.MainLoop() self.__bus = IBus.Bus() self.__bus.connect('disconnected', self.__bus_disconnected_cb) self.__factory = factory.EngineFactory(self.__bus) if exec_by_ibus: self.__bus.request_name('org.freedesktop.IBus.Anthy', 0) else: self.__bus.register_component(self.__component) def run(self): self.__mainloop.run() def __bus_disconnected_cb(self, bus): self.__mainloop.quit() def launch_engine(exec_by_ibus): IMApp(exec_by_ibus).run() def get_userhome(): if 'HOME' not in os.environ: import pwd userhome = pwd.getpwuid(os.getuid()).pw_dir else: userhome = os.environ['HOME'] userhome = userhome.rstrip('/') return userhome def resync_engine_file(): user_config = path.join(get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml') if not path.exists(user_config): return if not path.exists(system_config): os.unlink(user_config) return # path.getmtime depends on the build time rather than install time. def __get_engine_file_version(engine_file): version_str = '' dom = xml.dom.minidom.parse(engine_file) elements = dom.getElementsByTagName('version') nodes = [] if len(elements) > 0: nodes = elements[0].childNodes if len(nodes) > 0: version_str = nodes[0].data if type(version_str) == unicode: version_str = str(version_str) if version_str != '': version_str = version_str.strip() return version_str user_config_version = __get_engine_file_version(user_config) system_config_version = __get_engine_file_version(system_config) if system_config_version > user_config_version: import shutil shutil.copyfile(system_config, user_config) def print_xml(): user_config = os.path.join(get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = os.path.join(config.PKGDATADIR, 'engine', 'default.xml') xml = None for f in [user_config, system_config]: if os.path.exists(f): xml = f break if xml == None: print >> sys.stderr, 'Not exist: %s' % system_config return file = open(xml, 'r') print file.read() file.close() def print_help(out, v = 0): print >> out, '-i, --ibus executed by ibus.' print >> out, '-h, --help show this message.' print >> out, '-d, --daemonize daemonize ibus.' print >> out, '-x, --xml print engine xml.' sys.exit(v) def main(): try: locale.setlocale(locale.LC_ALL, '') except: pass exec_by_ibus = False daemonize = False xml = False shortopt = 'ihdx' longopt = ['ibus', 'help', 'daemonize', 'xml'] try: opts, args = getopt.getopt(sys.argv[1:], shortopt, longopt) except getopt.GetoptError, err: print_help(sys.stderr, 1) for o, a in opts: if o in ('-h', '--help'): print_help(sys.stdout) elif o in ('-d', '--daemonize'): daemonize = True elif o in ('-i', '--ibus'): exec_by_ibus = True elif o in ('-x', '--xml'): xml = True else: print >> sys.stderr, 'Unknown argument: %s' % o print_help(sys.stderr, 1) if daemonize: if os.fork(): sys.exit() if xml: resync_engine_file() print_xml() return launch_engine(exec_by_ibus) if __name__ == '__main__': main() ibus-anthy-1.5.17/engine/python2/romaji.py000066400000000000000000000220321475510605700204040ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys from tables import * import segment def romaji_correction_rule_get(k, d): return (u'ん', k[1:2]) if k[0:1] == u'n' and not k[1:2] in u"aiueony'" else d class RomajiSegment(segment.Segment): _prefs = None _romaji_typing_rule_method = None _latin_with_shift = True _shift_mode = False def __init__(self, enchars=u'', jachars=u'', shift=False, unshift=False): if self._latin_with_shift: # If Shift key is pressed, Latin mode. # If Hiragana_Katakana key is pressed, Hiragana mode. if shift: self._shift_mode = True if unshift: self._shift_mode = False enchars_orig = enchars # Even if the chars are capital with CapsLock, Hiragana # should be converted. E.g. 'SA' enchars = enchars.lower() if not jachars and not shift: jachars = self.__get_romaji_typing_rule(enchars, None) if jachars == None: jachars = symbol_rule.get(enchars, u'') super(RomajiSegment, self).__init__(enchars_orig, jachars) @classmethod def INIT_ROMAJI_TYPING_RULE(cls, prefs): cls._prefs = prefs if prefs == None: cls._romaji_typing_rule_method = None return method = prefs.get_value('romaji-typing-rule', 'method') if method == None: method = 'default' cls._romaji_typing_rule_method = method keymap = prefs.get_value('romaji-typing-rule', 'list') if cls._romaji_typing_rule_method not in keymap.keys(): cls._romaji_typing_rule_method = None @classmethod def SET_LATIN_WITH_SHIFT(cls, latin_with_shift): # Do not use IBus.Config in every conversion for the performance. cls._latin_with_shift = latin_with_shift def __get_romaji_typing_rule(self, enchars, retval=None): prefs = self._prefs value = None method = self._romaji_typing_rule_method if method != None: # Need to send Unicode to typing_to_config_key instead of UTF-8 # not to separate U+A5 gkey = prefs.typing_to_config_key(enchars) if gkey == '': return None keymap = prefs.get_value('romaji-typing-rule', 'list')[method] value = prefs.unicode(keymap.get(gkey)) if value == '': value = None if value == None: value = retval else: value = romaji_typing_rule_static.get(enchars, retval) return value def is_finished(self): return self._jachars != u'' def append(self, enchar, shift=False, unshift=False): if self.is_finished(): if enchar == u'' and enchar == u'\0': return [] return [RomajiSegment(enchar)] text_orig = self._enchars + enchar text = text_orig.lower() if self._latin_with_shift: # If Shift key is pressed, Latin mode. # If Hiragana_Katakana key is pressed, Hiragana mode. if shift: self._shift_mode = True if unshift: self._shift_mode = False if self._shift_mode: self._enchars = text_orig return [] if shift: self._enchars = text_orig return [] jachars = self.__get_romaji_typing_rule(text, None) if jachars == None: jachars = symbol_rule.get(text, None) if jachars: self._enchars = text_orig self._jachars = jachars return [] jachars, c = romaji_double_consonat_typing_rule.get(text, (None, None)) if jachars: self._enchars = text_orig[0] self._jachars = jachars return [RomajiSegment(c)] # jachars, c = romaji_correction_rule.get(text, (None, None)) jachars, c = romaji_correction_rule_get(text, (None, None)) if jachars: self._enchars = text_orig[0] self._jachars = jachars return [RomajiSegment(c)] for i in range(-min(4, len(text)), 0): enchars = text[i:] jachars = self.__get_romaji_typing_rule(enchars, None) if jachars == None: jachars = symbol_rule.get(enchars, None) if jachars: jasegment = RomajiSegment(enchars, jachars) self._enchars = text_orig[:i] return [jasegment] jachars, c = romaji_double_consonat_typing_rule.get(enchars, (None, None)) if jachars: jasegment = RomajiSegment(enchars[:-len(c)], jachars) self._enchars = text_orig[:i] if c: return [jasegment, RomajiSegment(c)] return [jasegment] # jachars, c = romaji_correction_rule.get(enchars, (None, None)) jachars, c = romaji_correction_rule_get(enchars, (None, None)) if jachars: jasegment = RomajiSegment(enchars[:-len(c)], jachars) self._enchars = text_orig[:i] if c: return [jasegment, RomajiSegment(c)] return [jasegment] self._enchars = text_orig return [] def prepend(self, enchar, shift=False, unshift=False): if enchar == u'' or enchar == u'\0': return [] if self.is_finished(): return [RomajiSegment(enchar)] text_orig = enchar + self._enchars text = text_orig.lower() if self._latin_with_shift: if shift: self._shift_mode = True if unshift: self._shift_mode = False if self._shift_mode: self._enchars = text_orig return [] if shift: self._enchars = text_orig return [] jachars = self.__get_romaji_typing_rule(text, None) if jachars == None: jachars = symbol_rule.get(text, None) if jachars: self._enchars = text_orig self._jachars = jachars return [] jachars, c = romaji_double_consonat_typing_rule.get(text, (None, None)) if jachars: self._enchars = c return [RomajiSegment(text_orig[0], jachars)] # jachars, c = romaji_correction_rule.get(text, (None, None)) jachars, c = romaji_correction_rule_get(text, (None, None)) if jachars: self._enchars = c return [RomajiSegment(text_orig[0], jachars)] for i in range(min(4, len(text)), 0, -1): enchars = text[:i] jachars = self.__get_romaji_typing_rule(enchars, None) if jachars == None: jachars = symbol_rule.get(enchars, None) if jachars: jasegment = RomajiSegment(enchars, jachars) self._enchars = text_orig[i:] return [jasegment] jachars, c = romaji_double_consonat_typing_rule.get(enchars, (None, None)) if jachars: self._enchars = c + text_orig[i:] return [RomajiSegment(enchars[:-len(c)], jachars)] # jachars, c = romaji_correction_rule.get(enchars, (None, None)) jachars, c = romaji_correction_rule_get(enchars, (None, None)) if jachars: self._enchars = c + text_orig[i:] return [RomajiSegment(enchars[:-len(c)], jachars)] self._enchars = text_orig return [] def pop(self, index=-1): if index == -1: index = len(self._enchars) - 1 if index < 0 or index >= len(self._enchars): raise IndexError('Out of bound') if self.is_finished(): self._enchars = u'' self._jachars = u'' else: enchars = list(self._enchars) del enchars[index] self._enchars = u''.join(enchars) jachars = self.__get_romaji_typing_rule(self._enchars, None) if jachars == None: jachars = symbol_rule.get(self._enchars, u'') self._jachars = jachars ibus-anthy-1.5.17/engine/python2/segment.py000066400000000000000000000055641475510605700206000ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2013 Takao Fujiwara # Copyright (c) 2007-2013 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. from tables import * _half_full_table = [ (0x0020, 0x3000, 1), (0x0021, 0xFF01, 0x5E), ] def _h_to_f(c): code = ord (c) for half, full, size in _half_full_table: if code >= half and code < half + size: return unichr (full + code - half) return c def unichar_half_to_full(c): tdl = {'"': u'\u201d', "'": u'\u2019', '`': u'\u2018'} return tdl[c] if c in tdl else _h_to_f(c) class Segment(object): def __init__(self, enchars=u'', jachars=u''): self._enchars = enchars self._jachars = jachars def append(self, enchar): raise NotImplementedError('append() is not implemented') def prepend(self, enchar): raise NotImplementedError('prepend() is not implemented') def pop(self, index=-1): raise NotImplementedError('pop() is not implemented') def is_finished(self): raise NotImplementedError('is_finised() is not implemented') def set_enchars(self, enchars): self.enchars = enchars def get_enchars(self): return self._enchars def set_jachars(self, jachars): self._jachars = jachars def get_jachars(self): return self._jachars def to_hiragana(self): if self._jachars: return self._jachars return self._enchars def to_katakana(self): if self._jachars: return u''.join(map(lambda c: hiragana_katakana_table.get(c, (c, c, c))[0], self._jachars)) return self._enchars def to_half_width_katakana(self): if self._jachars: return u''.join(map(lambda c: hiragana_katakana_table.get(c, (c, c, c))[1], self._jachars)) return self._enchars def to_latin(self): return self._enchars def to_wide_latin(self): return u''.join(map(unichar_half_to_full, self._enchars)) def is_empty(self): if self._enchars or self._jachars: return False return True ibus-anthy-1.5.17/engine/python2/tables.py000066400000000000000000000414031475510605700204000ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2013 Takao Fujiwara # Copyright (c) 2007-2013 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. # string, result, cont romaji_typing_rule_static = { u'-' : u'ー', u'a' : u'あ', u'i' : u'い', u'u' : u'う', u'e' : u'え', u'o' : u'お', u'xa' : u'ぁ', u'xi' : u'ぃ', u'xu' : u'ぅ', u'xe' : u'ぇ', u'xo' : u'ぉ', u'la' : u'ぁ', u'li' : u'ぃ', u'lu' : u'ぅ', u'le' : u'ぇ', u'lo' : u'ぉ', u'wha' : u'うぁ', u'whi' : u'うぃ', u'whe' : u'うぇ', u'who' : u'うぉ', u'va' : u'ヴぁ', u'vi' : u'ヴぃ', u'vu' : u'ヴ', u've' : u'ヴぇ', u'vo' : u'ヴぉ', u'ka' : u'か', u'ki' : u'き', u'ku' : u'く', u'ke' : u'け', u'ko' : u'こ', u'lka' : u'ヵ', u'lke' : u'ヶ', # u'xka' : u'ゕ', u'xka' : u'ヵ', # u'xke' : u'ゖ', u'xke' : u'ヶ', u'ga' : u'が', u'gi' : u'ぎ', u'gu' : u'ぐ', u'ge' : u'げ', u'go' : u'ご', u'kya' : u'きゃ', u'kyi' : u'きぃ', u'kyu' : u'きゅ', u'kye' : u'きぇ', u'kyo' : u'きょ', u'kwa' : u'くぁ', u'gya' : u'ぎゃ', u'gyi' : u'ぎぃ', u'gyu' : u'ぎゅ', u'gye' : u'ぎぇ', u'gyo' : u'ぎょ', u'gwa' : u'ぐぁ', u'sa' : u'さ', u'si' : u'し', u'su' : u'す', u'se' : u'せ', u'so' : u'そ', u'za' : u'ざ', u'zi' : u'じ', u'zu' : u'ず', u'ze' : u'ぜ', u'zo' : u'ぞ', u'sya' : u'しゃ', u'syi' : u'しぃ', u'syu' : u'しゅ', u'sye' : u'しぇ', u'syo' : u'しょ', u'sha' : u'しゃ', u'shi' : u'し', u'shu' : u'しゅ', u'she' : u'しぇ', u'sho' : u'しょ', u'zya' : u'じゃ', u'zyi' : u'じぃ', u'zyu' : u'じゅ', u'zye' : u'じぇ', u'zyo' : u'じょ', u'ja' : u'じゃ', u'jya' : u'じゃ', u'ji' : u'じ', u'jyi' : u'じぃ', u'ju' : u'じゅ', u'jyu' : u'じゅ', u'je' : u'じぇ', u'jye' : u'じぇ', u'jo' : u'じょ', u'jyo' : u'じょ', u'ta' : u'た', u'ti' : u'ち', u'tu' : u'つ', u'tsu' : u'つ', u'te' : u'て', u'to' : u'と', u'da' : u'だ', u'di' : u'ぢ', u'du' : u'づ', u'de' : u'で', u'do' : u'ど', u'xtu' : u'っ', u'xtsu' : u'っ', u'ltu' : u'っ', u'ltsu' : u'っ', u'tya' : u'ちゃ', u'tyi' : u'ちぃ', u'tyu' : u'ちゅ', u'tye' : u'ちぇ', u'tyo' : u'ちょ', u'cya' : u'ちゃ', u'cyi' : u'ちぃ', u'cyu' : u'ちゅ', u'cye' : u'ちぇ', u'cyo' : u'ちょ', u'cha' : u'ちゃ', u'chi' : u'ち', u'chu' : u'ちゅ', u'che' : u'ちぇ', u'cho' : u'ちょ', u'dya' : u'ぢゃ', u'dyi' : u'ぢぃ', u'dyu' : u'ぢゅ', u'dye' : u'ぢぇ', u'dyo' : u'ぢょ', u'tsa' : u'つぁ', u'tsi' : u'つぃ', u'tse' : u'つぇ', u'tso' : u'つぉ', u'tha' : u'てゃ', u'thi' : u'てぃ', u'thu' : u'てゅ', u'the' : u'てぇ', u'tho' : u'てょ', u'twu' : u'とぅ', u'dha' : u'でゃ', u'dhi' : u'でぃ', u'dhu' : u'でゅ', u'dhe' : u'でぇ', u'dho' : u'でょ', u'dwu' : u'どぅ', u'na' : u'な', u'ni' : u'に', u'nu' : u'ぬ', u'ne' : u'ね', u'no' : u'の', u'nya' : u'にゃ', u'nyi' : u'にぃ', u'nyu' : u'にゅ', u'nye' : u'にぇ', u'nyo' : u'にょ', u'ha' : u'は', u'hi' : u'ひ', u'hu' : u'ふ', u'he' : u'へ', u'ho' : u'ほ', u'ba' : u'ば', u'bi' : u'び', u'bu' : u'ぶ', u'be' : u'べ', u'bo' : u'ぼ', u'pa' : u'ぱ', u'pi' : u'ぴ', u'pu' : u'ぷ', u'pe' : u'ぺ', u'po' : u'ぽ', u'hya' : u'ひゃ', u'hyi' : u'ひぃ', u'hyu' : u'ひゅ', u'hye' : u'ひぇ', u'hyo' : u'ひょ', u'bya' : u'びゃ', u'byi' : u'びぃ', u'byu' : u'びゅ', u'bye' : u'びぇ', u'byo' : u'びょ', u'pya' : u'ぴゃ', u'pyi' : u'ぴぃ', u'pyu' : u'ぴゅ', u'pye' : u'ぴぇ', u'pyo' : u'ぴょ', u'fa' : u'ふぁ', u'fi' : u'ふぃ', u'fu' : u'ふ', u'fe' : u'ふぇ', u'fo' : u'ふぉ', u'fya' : u'ふゃ', u'fyi' : u'ふぃ', u'fyu' : u'ふゅ', u'fye' : u'ふぇ', u'fyo' : u'ふょ', u'ma' : u'ま', u'mi' : u'み', u'mu' : u'む', u'me' : u'め', u'mo' : u'も', u'mya' : u'みゃ', u'myi' : u'みぃ', u'myu' : u'みゅ', u'mye' : u'みぇ', u'myo' : u'みょ', u'ya' : u'や', u'yi' : u'い', u'yu' : u'ゆ', u'ye' : u'いぇ', u'yo' : u'よ', u'lya' : u'ゃ', u'lyi' : u'ぃ', u'lyu' : u'ゅ', u'lye' : u'ぇ', u'lyo' : u'ょ', u'xya' : u'ゃ', u'xyi' : u'ぃ', u'xyu' : u'ゅ', u'xye' : u'ぇ', u'xyo' : u'ょ', u'ra' : u'ら', u'ri' : u'り', u'ru' : u'る', u're' : u'れ', u'ro' : u'ろ', u'rya' : u'りゃ', u'ryi' : u'りぃ', u'ryu' : u'りゅ', u'rye' : u'りぇ', u'ryo' : u'りょ', u'wa' : u'わ', u'wi' : u'うぃ', u'wu' : u'う', u'we' : u'うぇ', u'wo' : u'を', u'lwa' : u'ゎ', u'xwa' : u'ゎ', u'n\'' : u'ん', u'nn' : u'ん', u'wyi' : u'ゐ', u'wye' : u'ゑ', } symbol_rule = { # symbols u' ' : u' ', u',' : u'、', u'.' : u'。', u'!' : u'!', u'"' : u'\u201d', u'#' : u'#', u'$' : u'$', u'%' : u'%', u'&' : u'&', u'\'' : u'\u2019', u'(' : u'(', u')' : u')', u'~' : u'\uff5e', u'-' : u'ー', u'=' : u'=', u'^' : u'^', u'\\' : u'\', u'|' : u'|', u'`' : u'\u2018', u'@' : u'@', u'{' : u'{', u'[' : u'「', u'+' : u'+', u';' : u';', u'*' : u'*', u':' : u':', u'}' : u'}', u']' : u'」', u'<' : u'<', u'>' : u'>', u'?' : u'?', u'/' : u'/', u'_' : u'_', u'¥' : u'¥', # numbers u'0': u'0', u'1': u'1', u'2': u'2', u'3': u'3', u'4': u'4', u'5': u'5', u'6': u'6', u'7': u'7', u'8': u'8', u'9': u'9', } # this is only used with romaji_typing_rule romaji_double_consonat_typing_rule = { # double consonant rule u'bb' : (u'っ', u'b'), u'cc' : (u'っ', u'c'), u'dd' : (u'っ', u'd'), u'ff' : (u'っ', u'f'), u'gg' : (u'っ', u'g'), u'hh' : (u'っ', u'h'), u'jj' : (u'っ', u'j'), u'kk' : (u'っ', u'k'), u'mm' : (u'っ', u'm'), u'pp' : (u'っ', u'p'), u'rr' : (u'っ', u'r'), u'ss' : (u'っ', u's'), u'tt' : (u'っ', u't'), u'vv' : (u'っ', u'v'), u'ww' : (u'っ', u'w'), u'xx' : (u'っ', u'x'), u'yy' : (u'っ', u'y'), u'zz' : (u'っ', u'z'), } # this is only used with romaji_typing_rule romaji_correction_rule = { u'nb' : (u'ん', u'b'), u'nc' : (u'ん', u'c'), u'nd' : (u'ん', u'd'), u'nf' : (u'ん', u'f'), u'ng' : (u'ん', u'g'), u'nh' : (u'ん', u'h'), u'nj' : (u'ん', u'j'), u'nk' : (u'ん', u'k'), u'nl' : (u'ん', u'l'), u'nm' : (u'ん', u'm'), u'np' : (u'ん', u'p'), u'nr' : (u'ん', u'r'), u'ns' : (u'ん', u's'), u'nt' : (u'ん', u't'), u'nv' : (u'ん', u'v'), u'nw' : (u'ん', u'w'), u'nx' : (u'ん', u'x'), u'nz' : (u'ん', u'z'), u'n\0' : (u'ん', u''), u'n,' : (u'ん', u','), u'n.' : (u'ん', u'.'), } # EUC-JP and SJIS do not have the chars romaji_utf8_rule = { u'う゛' : [u'ゔ'], } # Hiragana normalization is needed for the personal dict. romaji_normalize_rule = { u'ヴ' : [u'う゛'], } # a port of 101kana.sty from scim-anthy kana_typing_rule_static = { # no modifiers keys u'1' : u'ぬ', u'2' : u'ふ', u'3' : u'あ', u'4' : u'う', u'5' : u'え', u'6' : u'お', u'7' : u'や', u'8' : u'ゆ', u'9' : u'よ', u'0' : u'わ', u'-' : u'ほ', u'^' : u'へ', u'q' : u'た', u'w' : u'て', u'e' : u'い', u'r' : u'す', u't' : u'か', u'y' : u'ん', u'u' : u'な', u'i' : u'に', u'o' : u'ら', u'p' : u'せ', u'@' : u'゛', u'[' : u'゜', u'a' : u'ち', u's' : u'と', u'd' : u'し', u'f' : u'は', u'g' : u'き', u'h' : u'く', u'j' : u'ま', u'k' : u'の', u'l' : u'り', u';' : u'れ', u':' : u'け', u']' : u'む', u'z' : u'つ', u'x' : u'さ', u'c' : u'そ', u'v' : u'ひ', u'b' : u'こ', u'n' : u'み', u'm' : u'も', u',' : u'ね', u'.' : u'る', u'/' : u'め', # u'\\' : u'ー', u'\\' : u'ろ', # shift modifiered keys u'!' : u'ぬ', u'"' : u'ふ', u'#' : u'ぁ', u'$' : u'ぅ', u'%' : u'ぇ', u'&' : u'ぉ', u'\'' : u'ゃ', u'(' : u'ゅ', u')' : u'ょ', u'~' : u'を', u'=' : u'ほ', u'|' : u'ー', u'Q' : u'た', u'W' : u'て', u'E' : u'ぃ', u'R' : u'す', u'T' : u'ヵ', u'Y' : u'ん', u'U' : u'な', u'I' : u'に', u'O' : u'ら', u'P' : u'せ', u'`' : u'゛', u'{' : u'「', u'A' : u'ち', u'S' : u'と', u'D' : u'し', u'F' : u'ゎ', u'G' : u'き', u'H' : u'く', u'J' : u'ま', u'K' : u'の', u'L' : u'り', u'+' : u'れ', u'*' : u'ヶ', u'}' : u'」', u'Z' : u'っ', u'X' : u'さ', u'C' : u'そ', u'V' : u'ゐ', u'B' : u'こ', u'M' : u'も', u'N' : u'み', u'<' : u'、', u'>' : u'。', u'?' : u'・', u'_' : u'ろ', u'¥' : u'ー', } kana_voiced_consonant_no_rule = { u'か' : u'が', u'き' : u'ぎ', u'く' : u'ぐ', u'け' : u'げ', u'こ' : u'ご', u'さ' : u'ざ', u'し' : u'じ', u'す' : u'ず', u'せ' : u'ぜ', u'そ' : u'ぞ', u'た' : u'だ', u'ち' : u'ぢ', u'つ' : u'づ', u'て' : u'で', u'と' : u'ど', u'は' : u'ば', u'ひ' : u'び', u'ふ' : u'ぶ', u'へ' : u'べ', u'ほ' : u'ぼ', } kana_semi_voiced_consonant_no_rule = { u'は' : u'ぱ', u'ひ' : u'ぴ', u'ふ' : u'ぷ', u'へ' : u'ぺ', u'ほ' : u'ぽ', } # Create the table dynamically with kana_voiced_consonant_no_rule # #kana_voiced_consonant_rule = { # u'か@' : u'が', # u'き@' : u'ぎ', # u'く@' : u'ぐ', # u'け@' : u'げ', # u'こ@' : u'ご', # u'さ@' : u'ざ', # u'し@' : u'じ', # u'す@' : u'ず', # u'せ@' : u'ぜ', # u'そ@' : u'ぞ', # u'た@' : u'だ', # u'ち@' : u'ぢ', # u'つ@' : u'づ', # u'て@' : u'で', # u'と@' : u'ど', # u'は@' : u'ば', # u'ひ@' : u'び', # u'ふ@' : u'ぶ', # u'へ@' : u'べ', # u'ほ@' : u'ぼ', # u'か`' : u'が', # u'き`' : u'ぎ', # u'く`' : u'ぐ', # u'け`' : u'げ', # u'こ`' : u'ご', # u'さ`' : u'ざ', # u'し`' : u'じ', # u'す`' : u'ず', # u'せ`' : u'ぜ', # u'そ`' : u'ぞ', # u'た`' : u'だ', # u'ち`' : u'ぢ', # u'つ`' : u'づ', # u'て`' : u'で', # u'と`' : u'ど', # u'は`' : u'ば', # u'ひ`' : u'び', # u'ふ`' : u'ぶ', # u'へ`' : u'べ', # u'ほ`' : u'ぼ', # u'は[' : u'ぱ', # u'ひ[' : u'ぴ', # u'ふ[' : u'ぷ', # u'へ[' : u'ぺ', # u'ほ[' : u'ぽ', #} # #kana_voiced_consonant_us_rule = { # u'か[' : u'が', # u'き[' : u'ぎ', # u'く[' : u'ぐ', # u'け[' : u'げ', # u'こ[' : u'ご', # u'さ[' : u'ざ', # u'し[' : u'じ', # u'す[' : u'ず', # u'せ[' : u'ぜ', # u'そ[' : u'ぞ', # u'た[' : u'だ', # u'ち[' : u'ぢ', # u'つ[' : u'づ', # u'て[' : u'で', # u'と[' : u'ど', # u'は[' : u'ば', # u'ひ[' : u'び', # u'ふ[' : u'ぶ', # u'へ[' : u'べ', # u'ほ[' : u'ぼ', # u'は]' : u'ぱ', # u'ひ]' : u'ぴ', # u'ふ]' : u'ぷ', # u'へ]' : u'ぺ', # u'ほ]' : u'ぽ', #} #hiragana, katakana, half_katakana hiragana_katakana_table = { u'あ' : (u'ア', u'ア'), u'い' : (u'イ', u'イ'), u'う' : (u'ウ', u'ウ'), u'え' : (u'エ', u'エ'), u'お' : (u'オ', u'オ'), u'か' : (u'カ', u'カ'), u'き' : (u'キ', u'キ'), u'く' : (u'ク', u'ク'), u'け' : (u'ケ', u'ケ'), u'こ' : (u'コ', u'コ'), u'が' : (u'ガ', u'ガ'), u'ぎ' : (u'ギ', u'ギ'), u'ぐ' : (u'グ', u'グ'), u'げ' : (u'ゲ', u'ゲ'), u'ご' : (u'ゴ', u'ゴ'), u'さ' : (u'サ', u'サ'), u'し' : (u'シ', u'シ'), u'す' : (u'ス', u'ス'), u'せ' : (u'セ', u'セ'), u'そ' : (u'ソ', u'ソ'), u'ざ' : (u'ザ', u'ザ'), u'じ' : (u'ジ', u'ジ'), u'ず' : (u'ズ', u'ズ'), u'ぜ' : (u'ゼ', u'ゼ'), u'ぞ' : (u'ゾ', u'ゾ'), u'た' : (u'タ', u'タ'), u'ち' : (u'チ', u'チ'), u'つ' : (u'ツ', u'ツ'), u'て' : (u'テ', u'テ'), u'と' : (u'ト', u'ト'), u'だ' : (u'ダ', u'ダ'), u'ぢ' : (u'ヂ', u'ヂ'), u'づ' : (u'ヅ', u'ヅ'), u'で' : (u'デ', u'デ'), u'ど' : (u'ド', u'ド'), u'な' : (u'ナ', u'ナ'), u'に' : (u'ニ', u'ニ'), u'ぬ' : (u'ヌ', u'ヌ'), u'ね' : (u'ネ', u'ネ'), u'の' : (u'ノ', u'ノ'), u'は' : (u'ハ', u'ハ'), u'ひ' : (u'ヒ', u'ヒ'), u'ふ' : (u'フ', u'フ'), u'へ' : (u'ヘ', u'ヘ'), u'ほ' : (u'ホ', u'ホ'), u'ば' : (u'バ', u'バ'), u'び' : (u'ビ', u'ビ'), u'ぶ' : (u'ブ', u'ブ'), u'べ' : (u'ベ', u'ベ'), u'ぼ' : (u'ボ', u'ボ'), u'ぱ' : (u'パ', u'パ'), u'ぴ' : (u'ピ', u'ピ'), u'ぷ' : (u'プ', u'プ'), u'ぺ' : (u'ペ', u'ペ'), u'ぽ' : (u'ポ', u'ポ'), u'ま' : (u'マ', u'マ'), u'み' : (u'ミ', u'ミ'), u'む' : (u'ム', u'ム'), u'め' : (u'メ', u'メ'), u'も' : (u'モ', u'モ'), u'や' : (u'ヤ', u'ヤ'), u'ゆ' : (u'ユ', u'ユ'), u'よ' : (u'ヨ', u'ヨ'), u'ら' : (u'ラ', u'ラ'), u'り' : (u'リ', u'リ'), u'る' : (u'ル', u'ル'), u'れ' : (u'レ', u'レ'), u'ろ' : (u'ロ', u'ロ'), u'わ' : (u'ワ', u'ワ'), u'を' : (u'ヲ', u'ヲ'), u'ん' : (u'ン', u'ン'), u'ぁ' : (u'ァ', u'ァ'), u'ぃ' : (u'ィ', u'ィ'), u'ぅ' : (u'ゥ', u'ゥ'), u'ぇ' : (u'ェ', u'ェ'), u'ぉ' : (u'ォ', u'ォ'), u'っ' : (u'ッ', u'ッ'), u'ゃ' : (u'ャ', u'ャ'), u'ゅ' : (u'ュ', u'ュ'), u'ょ' : (u'ョ', u'ョ'), u'ヵ' : (u'ヵ', u'カ'), u'ヶ' : (u'ヶ', u'ケ'), u'ゎ' : (u'ヮ', u'ワ'), u'ゐ' : (u'ヰ', u'ィ'), u'ゑ' : (u'ヱ', u'ェ'), u'ヴ' : (u'ヴ', u'ヴ'), # symbols u'ー' : (u'ー', u'ー'), u'、' : (u'、', u'、'), u'。' : (u'。', u'。'), u'!' : (u'!', u'!'), u'\u201d' : (u'\u201d', u'"'), u'#' : (u'#', u'#'), u'$' : (u'$', u'$'), u'%' : (u'%', u'%'), u'&' : (u'&', u'&'), u'\u2019' : (u'\u2019', u'\''), u'(' : (u'(', u'('), u')' : (u')', u')'), u'\uff5e' : (u'\uff5e', u'~'), u'=' : (u'=', u'='), u'^' : (u'^', u'^'), u'\' : (u'\', u'\\'), u'|' : (u'|', u'|'), u'\u2018' : (u'\u2018', u'`'), u'@' : (u'@', u'@'), u'゛' : (u'゛', u'゙'), u'{' : (u'{', u'{'), u'゜' : (u'゜', u'゚'), u'「' : (u'「', u'「'), u'+' : (u'+', u'+'), u';' : (u';', u';'), u'*' : (u'*', u'*'), u':' : (u':', u':'), u'}' : (u'}', u'}'), u'」' : (u'」', u'」'), u'<' : (u'<', u'<'), u'>' : (u'>', u'>'), u'?' : (u'?', u'?'), u'・' : (u'・', u'・'), u'/' : (u'/', u'/'), u'_' : (u'_', u'_'), u'¥' : (u'¥', u'¥'), # numbers u'0': (u'0', u'0'), u'1': (u'1', u'1'), u'2': (u'2', u'2'), u'3': (u'3', u'3'), u'4': (u'4', u'4'), u'5': (u'5', u'5'), u'6': (u'6', u'6'), u'7': (u'7', u'7'), u'8': (u'8', u'8'), u'9': (u'9', u'9'), } ibus-anthy-1.5.17/engine/python2/test.py000066400000000000000000000010221475510605700200760ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import anthy import sys ctx = anthy.anthy_context () ctx._set_encoding (2) if len(sys.argv) >= 2: ctx.set_string (sys.argv[1]) else: ctx.set_string ("かまぁく") conv_stat = anthy.anthy_conv_stat () seg_stat = anthy.anthy_segment_stat () ctx.get_stat (conv_stat) for i in range (0, conv_stat.nr_segment): ctx.get_segment_stat (i, seg_stat) buf = " " i = ctx.get_segment (i, 0, buf, 10) print buf[:i] # anthy.anthy_release_context (ctx) ctx = None ibus-anthy-1.5.17/engine/python2/thumb.py000066400000000000000000000503431475510605700202500ustar00rootroot00000000000000# -*- coding: utf-8 -*- # vim:set et sts=4 sw=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. __all__ = ( 'ThumbShiftKeyboard', 'ThumbShiftSegment', ) import sys from gi import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') from gi.repository import GLib from gi.repository import IBus import segment _THUMB_BASIC_METHOD = 'base' _table_static = { 'q': [u'。', u'', u'ぁ'], 'w': [u'か', u'が', u'え'], 'e': [u'た', u'だ', u'り'], 'r': [u'こ', u'ご', u'ゃ'], 't': [u'さ', u'ざ', u'れ'], 'y': [u'ら', u'よ', u'ぱ'], 'u': [u'ち', u'に', u'ぢ'], 'i': [u'く', u'る', u'ぐ'], 'o': [u'つ', u'ま', u'づ'], 'p': [u',', u'ぇ', u'ぴ'], '@': [u'、', u'', u''], '[': [u'゛', u'゜', u''], 'a': [u'う', u'', u'を'], 's': [u'し', u'じ', u'あ'], 'd': [u'て', u'で', u'な'], 'f': [u'け', u'げ', u'ゅ'], 'g': [u'せ', u'ぜ', u'も'], 'h': [u'は', u'み', u'ば'], 'j': [u'と', u'お', u'ど'], 'k': [u'き', u'の', u'ぎ'], 'l': [u'い', u'ょ', u'ぽ'], ';': [u'ん', u'っ', u''], 'z': [u'.', u'', u'ぅ'], 'x': [u'ひ', u'び', u'ー'], 'c': [u'す', u'ず', u'ろ'], 'v': [u'ふ', u'ぶ', u'や'], 'b': [u'へ', u'べ', u'ぃ'], 'n': [u'め', u'ぬ', u'ぷ'], 'm': [u'そ', u'ゆ', u'ぞ'], ',': [u'ね', u'む', u'ぺ'], '.': [u'ほ', u'わ', u'ぼ'], '/': [u'・', u'ぉ', u''], '1': [u'1', u'', u'?'], '2': [u'2', u'', u'/'], '4': [u'4', u'', u'「'], '5': [u'5', u'', u'」'], '6': [u'6', u'[', u''], '7': [u'7', u']', u''], '8': [u'8', u'(', u''], '9': [u'9', u')', u''], '\\': [u'¥', u'', u''], } _nicola_j_table_static = { ':': [u':', u'', u''], '@': [u'、', u'', u''], '[': [u'゛', u'゜', u''], ']': [u'」', u'', u''], '8': [u'8', u'(', u''], '9': [u'9', u')', u''], '0': [u'0', u'', u''], } _nicola_a_table_static = { ':': [u':', u'', u''], '@': [u'@', u'', u''], '[': [u'、', u'', u''], ']': [u'゛', u'゜', u''], '8': [u'8', u'', u''], '9': [u'9', u'(', u''], '0': [u'0', u')', u''], } _nicola_f_table_static = { ':': [u'、', u'', u''], '@': [u'@', u'', u''], '[': [u'゛', u'゜', u''], ']': [u'」', u'', u''], '8': [u'8', u'(', u''], '9': [u'9', u')', u''], '0': [u'0', u'', u''], } _kb231_j_fmv_table_static = { '3': [u'3', u'', u'~'], '0': [u'0', u'『', u''], '-': [u'-', u'』', u''], '=': [u'=', u'', u''], } _kb231_a_fmv_table_static = { '3': [u'3', u'', u'~'], '0': [u'0', u')', u''], '-': [u'-', u'『', u''], '=': [u'=', u'』', u''], } _kb231_f_fmv_table_static = { '3': [u'3', u'', u'~'], '0': [u'0', u'『', u''], '-': [u'-', u'』', u''], '=': [u'=', u'', u''], } _kb611_j_fmv_table_static = { '`': [u'‘', u'', u''], '^': [u'々', u'£', u''], ':': [u':', u'', u''], '@': [u'、', u'¢', u''], '[': [u'゛', u'゜', u''], # keysyms are same and keycodes depend on the platforms. #'¥': [u'¥', u'¬', u''], '\\': [u'¥', u'¦', u''], } _kb611_a_fmv_table_static = { '`': [u'々', u'', u'£'], ':': [u':', u'', u''], '@': [u'@', u'', u''], '[': [u'、', u'¢', u''], #'¥': [u'¥', u'¬', u''], '\\': [u'¥', u'¦', u''], } _kb611_f_fmv_table_static = { '`': [u'‘', u'', u''], '^': [u'々', u'£', u''], ':': [u'、', u'¢', u''], '@': [u'@', u'', u''], '[': [u'゛', u'゜', u''], #'¥': [u'¥', u'¬', u''], '\\': [u'¥', u'¦', u''], } _shift_table = { 'H': u'ぱ', 'X': u'ぴ', 'V': u'ぷ', 'B': u'ぺ', '>': u'ぽ', } table_static = {} r_table_static = {} for k in _table_static.keys(): table_static[ord(k)] = _table_static[k] for c in _table_static[k]: r_table_static[c] = k kana_voiced_consonant_rule = { u'か゛' : u'が', u'き゛' : u'ぎ', u'く゛' : u'ぐ', u'け゛' : u'げ', u'こ゛' : u'ご', u'さ゛' : u'ざ', u'し゛' : u'じ', u'す゛' : u'ず', u'せ゛' : u'ぜ', u'そ゛' : u'ぞ', u'た゛' : u'だ', u'ち゛' : u'ぢ', u'つ゛' : u'づ', u'て゛' : u'で', u'と゛' : u'ど', u'は゛' : u'ば', u'ひ゛' : u'び', u'ふ゛' : u'ぶ', u'へ゛' : u'べ', u'ほ゛' : u'ぼ', u'は゜' : u'ぱ', u'ひ゜' : u'ぴ', u'ふ゜' : u'ぷ', u'へ゜' : u'ぺ', u'ほ゜' : u'ぽ', } _UNFINISHED_HIRAGANA = set(u'かきくけこさしすせそたちつてとはひふへほ') class ThumbShiftKeyboard: def __init__(self, prefs=None): self.__prefs = prefs self.__table = table_static self.__r_table = r_table_static self.__shift_table = {} self.__ls = 0 self.__rs = 0 self.__t1 = 0 self.__t2 = 0 self.__layout = 0 self.__fmv_extension = 2 self.__handakuten = False self.__thumb_typing_rule_method = None self.__init_thumb_typing_rule() self.__init_layout_table() if self.__prefs != None: self.reset() self.__reset_shift_table(False) def __init_thumb_typing_rule(self): prefs = self.__prefs if prefs == None: self.__thumb_typing_rule_method = None return method = prefs.get_value('thumb-typing-rule', 'method') if method == None: method = _THUMB_BASIC_METHOD self.__thumb_typing_rule_method = method keymap = prefs.get_value('thumb-typing-rule', 'list') if self.__thumb_typing_rule_method not in keymap.keys(): self.__thumb_typing_rule_method = None def __init_layout_table(self): if self.__table != {}: self.__table.clear() if self.__r_table != {}: self.__r_table.clear() method = self.__thumb_typing_rule_method if method != None: prefs = self.__prefs keymap = prefs.get_value('thumb-typing-rule', 'list')[method] for k in keymap.keys(): value = keymap.get(k) ch = prefs.typing_from_config_key(k) if ch == '': continue self.__set_bus_table(ch, value) else: for k in _table.keys(): self.__table[ord(k)] = _table_static[k] for c in _table_static[k]: self.__r_table[c] = k def __set_bus_table(self, key, value): prefs = self.__prefs if value == None or len(value) != 3: return value = [prefs.unicode(prefs.str(value[0])), prefs.unicode(prefs.str(value[1])), prefs.unicode(prefs.str(value[2]))] if value[0] == u'' and \ value[1] == u'' and value[2] == u'': return self.__table[ord(key)] = value for c in value: self.__r_table[c] = key def __reset_layout_table(self, init, j_table_label, j_table, a_table_label, a_table, f_table_label, f_table): if init: self.__init_layout_table() method = None sub_table = None if self.__layout == 0: method = j_table_label sub_table = j_table elif self.__layout == 1: method = a_table_label sub_table = a_table elif self.__layout == 2: method = f_table_label sub_table = f_table if method == None or sub_table == None: return method = self.__thumb_typing_rule_method if method != None: prefs = self.__prefs keymap = prefs.get_value('thumb-typing-rule', 'list')[method] for k in keymap.keys(): value = keymap.get(k) ch = prefs.typing_from_config_key(k) if ch == '': continue self.__set_bus_table(ch, value) else: for k in sub_table.keys(): self.__table[ord(unicode(k))] = sub_table[k] for c in sub_table[k]: self.__r_table[c] = k def __reset_extension_table(self, init): self.__reset_layout_table(init, 'nicola_j_table', _nicola_j_table_static, 'nicola_a_table', _nicola_a_table_static, 'nicola_f_table', _nicola_f_table_static) if self.__fmv_extension == 0: return if self.__fmv_extension >= 1: self.__reset_layout_table(False, 'kb231_j_fmv_table', _kb231_j_fmv_table_static, 'kb231_a_fmv_table', _kb231_a_fmv_table_static, 'kb231_f_fmv_table', _kb231_f_fmv_table_static) if self.__fmv_extension >= 2: self.__reset_layout_table(False, 'kb611_j_fmv_table', _kb611_j_fmv_table_static, 'kb611_a_fmv_table', _kb611_a_fmv_table_static, 'kb611_f_fmv_table', _kb611_f_fmv_table_static) def __reset_shift_table(self, init): self.__reset_extension_table(init) if self.__handakuten: for k in _shift_table.keys(): self.__shift_table[ord(k)] = _shift_table[k] self.__r_table[_shift_table[k]] = k elif self.__shift_table != {}: for k in _shift_table.keys(): if ord(k) in self.__shift_table: del self.__shift_table[ord(k)] if _shift_table[k] in self.__r_table: del self.__r_table[_shift_table[k]] def __s_to_key_raw(self, s): keyval = IBus.keyval_from_name(s.split('+')[-1]) s = s.lower() state = ('shift+' in s and IBus.ModifierType.SHIFT_MASK or 0) | ( 'ctrl+' in s and IBus.ModifierType.CONTROL_MASK or 0) | ( 'alt+' in s and IBus.ModifierType.MOD1_MASK or 0) return (keyval, state) def __get_xkb_layout(self): # Until Gdk.property_get is fixed ''' # Move importing Gdk into ThumbShiftKeyboard from the header # because ibus-engine-anthy --xml does not requre to open X. try: from gi.repository import Gdk get_default_root_window = Gdk.get_default_root_window property_get = Gdk.property_get intern = Gdk.Atom.intern except ImportError: get_default_root_window = lambda : None property_get = lambda : None intern = lambda : None except RuntimeError: # Do we support the engine without display? print >> sys.stderr, "Gdk couldn't be initialized" print >> sys.stderr, 'Could not open display' get_default_root_window = lambda : None property_get = lambda : None intern = lambda : None root_window = get_default_root_window() if not root_window: return 0 xkb_rules_names = intern('_XKB_RULES_NAMES', False) xa_string = intern('STRING', False) try: prop = property_get(root_window, xkb_rules_names, xa_string, 0, 1024, 0)[3] layout_list = prop.split('\0') except TypeError: print >> sys.stderr, \ 'This problem is fixed in the latest gobject-introspection' print >> sys.stderr, \ 'https://bugzilla.gnome.org/show_bug.cgi?id=670509' return 0 layout = 0 for data in layout_list: if data == 'jp': layout = 0 elif data == 'us': layout = 1 elif data.find('japan:nicola_f_bs') >= 0: layout = 2 elif data.find('japan:') >= 0: layout = 0 return layout ''' layout = 0 argv = ['setxkbmap', '-query'] (ret, std_out, std_error, exit_status) = \ GLib.spawn_sync(None, argv, None, GLib.SpawnFlags.SEARCH_PATH_FROM_ENVP, None, None) if not ret: print >> sys.stderr, std_error return layout for line in std_out.split('\n'): if line.startswith('layout:'): data = line.split()[1] if data == 'jp': layout = 0 elif data == 'us': layout = 1 elif line.startswith('options:'): data = line.split()[1] if data.find('japan:nicola_f_bs') >= 0: layout = 2 elif data.find('japan:') >= 0: layout = 0 return layout def __reset_layout_and_handakuten(self): mode = self.__prefs.get_value('thumb', 'keyboard-layout-mode') layout = 0 if mode == 1: layout = self.__get_xkb_layout() else: layout = self.__prefs.get_value('thumb', 'keyboard-layout') self.set_layout(layout) fmv_extension = self.__prefs.get_value('thumb', 'fmv-extension') self.set_fmv_extension(fmv_extension) handakuten = self.__prefs.get_value('thumb', 'handakuten') self.set_handakuten(handakuten) def reset(self): s = self.__prefs.get_value('thumb', 'ls') ls, state = self.__s_to_key_raw(s) if ls == 0xffffff: ls = IBus.KEY_Muhenkan self.set_ls(ls) s = self.__prefs.get_value('thumb', 'rs') rs, state = self.__s_to_key_raw(s) if rs == 0xffffff: rs = IBus.KEY_Henkan self.set_rs(rs) t1 = self.__prefs.get_value('thumb', 't1') t2 = self.__prefs.get_value('thumb', 't2') self.set_t1(t1) self.set_t2(t2) GLib.idle_add(self.__reset_layout_and_handakuten, priority = GLib.PRIORITY_LOW) def get_ls(self): return self.__ls def set_ls(self, ls): self.__ls = ls def get_rs(self): return self.__rs def set_rs(self, rs): self.__rs = rs def get_t1(self): return self.__t1 def set_t1(self, t1): self.__t1 = t1 def get_t2(self): return self.__t2 def set_t2(self, t2): self.__t2 = t2 def get_layout(self): return self.__layout def set_layout(self, layout): if self.__layout == layout: return self.__layout = layout self.__reset_shift_table(True) def get_fmv_extension (self): return self.__fmv_extension def set_fmv_extension (self, fmv_extension): if self.__fmv_extension == fmv_extension: return self.__fmv_extension = fmv_extension self.__reset_shift_table(True) def get_handakuten(self): return self.__handakuten def set_handakuten(self, handakuten): if self.__handakuten == handakuten: return self.__handakuten = handakuten self.__reset_shift_table(True) def get_char(self, key, fallback=None): return self.__table.get(key, fallback) def get_chars(self): return self.__table.keys() def get_r_char(self, key, fallback=None): return self.__r_table.get(key, fallback) def get_r_chars(self): return self.__r_table.keys() def get_shift_char(self, key, fallback=None): return self.__shift_table.get(key, fallback) def get_shift_chars(self): return self.__shift_table.keys() class ThumbShiftSegment(segment.Segment): _prefs = None _thumb_typing_rule_section_base = None _thumb_typing_rule_section = None _r_table = {} def __init__(self, enchars=u'', jachars=u''): if not jachars: if u'!' <= enchars <= u'~': jachars = segment.unichar_half_to_full(enchars) else: jachars = enchars enchars = self._r_table.get(jachars, u'') super(ThumbShiftSegment, self).__init__(enchars, jachars) @classmethod def INIT_THUMB_TYPING_RULE(cls, prefs): cls._prefs = prefs if prefs == None: cls._thumb_typing_rule_section = None return method = prefs.get_value('thumb-typing-rule', 'method') if method == None: method = _THUMB_BASIC_METHOD cls._thumb_typing_rule_method = method keymap = prefs.get_value('thumb-typing-rule', 'list') if cls._thumb_typing_rule_method not in keymap.keys(): cls._thumb_typing_rule_method = None cls._init_layout_table() @classmethod def _init_layout_table(cls): if cls._r_table != {}: cls._r_table.clear() method = cls._thumb_typing_rule_method if method != None: prefs = cls._prefs keymap = prefs.get_value('thumb-typing-rule', 'list')[method] for k in keymap.keys(): value = keymap.get(k) ch = prefs.typing_from_config_key(k) if ch == '': continue cls._set_bus_table(ch, value) else: for k in _table.keys(): for c in _table_static[k]: cls._r_table[c] = k @classmethod def _set_bus_table(cls, key, value): prefs = cls._prefs if value == None or len(value) != 3: return value = [prefs.unicode(prefs.str(value[0])), prefs.unicode(prefs.str(value[1])), prefs.unicode(prefs.str(value[2]))] if value[0] == u'' and \ value[1] == u'' and value[2] == u'': return for c in value: cls._r_table[c] = key def is_finished(self): return not (self._jachars in _UNFINISHED_HIRAGANA) def append(self, enchar): if enchar == u'\0' or enchar == u'': return [] text = self._jachars + enchar jachars = kana_voiced_consonant_rule.get(text, None) if jachars: self._enchars = self._enchars + self._r_table.get(enchar, u'') self._jachars = jachars return [] return [ThumbShiftSegment(enchar)] def prepend(self, enchar): if enchar == u'\0' or enchar == u'': return [] if self._jachars == u'': if 0x21 <= enchars <= 0x7e: self._enchars = enchar self._jachars = segment.unichar_half_to_full(enchars) else: self._enchars = self._r_table.get(enchar, u'') self._jachars = enchar return [] return [ThumbShiftSegment(enchar)] def pop(self, index=-1): self._enchars = u'' self._jachars = u'' return ibus-anthy-1.5.17/engine/python3/000077500000000000000000000000001475510605700165535ustar00rootroot00000000000000ibus-anthy-1.5.17/engine/python3/Makefile.am000066400000000000000000000075061475510605700206170ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2019 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BUILT_SOURCES = _config.py engine_anthy_PYTHON = \ _config.py \ engine.py \ factory.py \ jastring.py \ kana.py \ main.py \ romaji.py \ segment.py \ tables.py \ thumb.py \ $(NULL) engine_anthydir = $(pkgdatadir)/engine engine_anthy_built_files = $(BUILT_SOURCES) engine_anthy_built_in_files = $(addsuffix .in, $(engine_anthy_built_files)) PYGTK2_ANTHY_RAW = anthy.i PYGTK2_ANTHY_GEN = anthy.py anthy_wrap.c if HAVE_PYGTK2_ANTHY anthy_DATA = \ anthy.py \ $(NULL) anthy_LTLIBRARIES = _anthy.la anthydir = @pyexecdir@ _anthy_la_SOURCES = \ $(NULL) nodist__anthy_la_SOURCES = \ anthy_wrap.c \ $(NULL) _anthy_la_CFLAGS = \ @ANTHY_CFLAGS@ \ @PYTHON_CFLAGS@ \ $(NULL) _anthy_la_LDFLAGS = \ @ANTHY_LIBS@ \ @PYTHON_LIBS@ \ -avoid-version \ -module \ $(NULL) anthy.py anthy_wrap.c: anthy.i $(SWIG) -python $(ANTHY_CFLAGS) -I/usr/include -o anthy_wrap.c $(srcdir)/anthy.i endif libexec_SCRIPTS = ibus-engine-anthy component_DATA = anthy.xml componentdir = $(datadir)/ibus/component engine_DATA = default.xml enginedir = $(pkgdatadir)/engine # $(SYMBOL_XML) cannot be extracted in Makefile but $(libexecdir) can be # extracted to ${exec_prefix}/libexec so use capital @LIBEXECDIR@ here. %.xml: %.inputMethod.xml.in sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|g" \ -e "s|\@PKGDATADIR\@|$(pkgdatadir)|g" \ $< > $@ ibus-engine-anthy: ibus-engine-anthy.in sed -e "s|\@prefix\@|$(prefix)|g" \ -e "s|\@exec_prefix\@|$(exec_prefix)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@datarootdir\@|$(datarootdir)|g" \ -e "s|\@PACKAGE\@|$(PACKAGE)|g" \ -e "s|\@PYTHON\@|$(PYTHON)|g" \ -e "s|\@ENV_IBUS_ENGINE\@|$(ENV_IBUS_ENGINE)|g" \ $< > $@ _config.py: _config.py.in sed -e "s|\@pkgdatadir\@|$(pkgdatadir)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@datadir\@|$(datadir)|g" \ -e "s|\@ANTHY_PC\@|$(ANTHY_PC)|g" \ -e "s|\@LAYOUT\@|$(LAYOUT)|g" \ -e "s|\@SYMBOL_CHAR_INT\@|$(SYMBOL_CHAR_INT)|g" \ -e "s|\@ICON_PREFERENCE\@|$(ICON_PREFERENCE)|g" \ -e "s|\@VERSION\@|$(VERSION)|g" \ $< > $@ test: $(ENV_IBUS_TEST) \ DBUS_DEBUG=true \ IBUS_ANTHY_PKGDATADIR=$(abs_top_srcdir) \ PYTHONPATH=$(builddir)/.libs:@pyexecdir@ \ $(PYTHON) \ $(srcdir)/main.py EXTRA_DIST = \ $(engine_anthy_built_in_files) \ $(PYGTK2_ANTHY_RAW) \ anthy.inputMethod.xml.in.in \ default.inputMethod.xml.in.in \ ibus-engine-anthy.in \ $(NULL) CLEANFILES = \ $(BUILT_SOURCES) \ $(PYGTK2_ANTHY_GEN) \ anthy.xml \ default.xml \ ibus-engine-anthy \ *.pyc \ $(NULL) DISTCLEANFILES = \ anthy.inputMethod.xml.in \ default.inputMethod.xml.in \ $(NULL) # Need a time lag between .py and .py.in files to build .py files # because *_PYTHON valuables are installed in the tarball. dist-hook: @sleep 1; \ for in_file in $(engine_anthy_built_in_files) ; do \ if [ -f $(distdir)/$(srcdir)/$$in_file ] ; then \ touch $(distdir)/$(srcdir)/$$in_file; \ fi; \ done; ibus-anthy-1.5.17/engine/python3/_config.py.in000066400000000000000000000022761475510605700211450ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2019 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ANTHY_PC= '@ANTHY_PC@' PKGDATADIR = '@pkgdatadir@' LIBEXECDIR = '@libexecdir@' LOCALEDIR = '@datadir@/locale' LAYOUT = '@LAYOUT@' SYMBOL_CHAR = chr(@SYMBOL_CHAR_INT@) ICON_PREFERENCE = '@ICON_PREFERENCE@' VERSION = '@VERSION@' DEBUG = False ibus-anthy-1.5.17/engine/python3/anthy.i000066400000000000000000000062051475510605700200530ustar00rootroot00000000000000/* vim:set et ts=4: */ /* * ibus-anthy - The Anthy engine for IBus * * Copyright (c) 2007-2008 Peng Huang * Copyright (c) 2010-2013 Takao Fujiwara * Copyright (c) 2007-2013 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. */ %module anthy %{ /* Put header files here or function declarations like below */ #include %} %init %{ anthy_init (); %} /* anthy_context_t */ %include anthy/anthy.h struct anthy_context {}; %extend anthy_context { anthy_context () { return anthy_create_context (); } void reset () { anthy_reset_context (self); } int set_string (char *str) { return anthy_set_string (self, str); } void resize_segment (int a1, int a2) { anthy_resize_segment (self, a1, a2); } int get_stat (struct anthy_conv_stat *a1) { return anthy_get_stat (self, a1); } int get_segment_stat (int a1, struct anthy_segment_stat *a2) { return anthy_get_segment_stat (self, a1, a2); } char *get_segment (int a1, int a2) { int len; static char temp[512]; len = anthy_get_segment (self, a1, a2, temp, sizeof (temp)); if (len >= 0) return temp; else return NULL; } int commit_segment (int a1, int a2) { return anthy_commit_segment (self, a1, a2); } int set_prediction_string (const char *a1) { return anthy_set_prediction_string (self, a1); } int get_prediction_stat (struct anthy_prediction_stat *a1) { return anthy_get_prediction_stat (self, a1); } char *get_prediction (int a1) { int len; static char temp[512]; len = anthy_get_prediction (self, a1, temp, sizeof (temp)); if (len >= 0) return temp; else return NULL; } int commit_prediction (int a1) { return anthy_commit_prediction(self, a1); } void _print () { anthy_print_context (self); } int _set_encoding (int encoding) { return anthy_context_set_encoding (self, encoding); } int set_reconversion_mode (int mode) { return anthy_set_reconversion_mode (self, mode); } int init_personality (void) { return anthy_init_personality (); } int do_set_personality (const char *id) { return anthy_do_set_personality (id); } ~anthy_context () { anthy_release_context (self); } }; ibus-anthy-1.5.17/engine/python3/anthy.inputMethod.xml.in.in000066400000000000000000000012221475510605700237260ustar00rootroot00000000000000 org.freedesktop.IBus.Anthy Anthy Component @LIBEXECDIR@/ibus-engine-anthy --ibus @PACKAGE_VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL https://github.com/ibus/ibus/wiki ibus-anthy ~/.config/ibus-anthy/engines.xml @PKGDATADIR@/engine/default.xml ibus-anthy-1.5.17/engine/python3/default.inputMethod.xml.in.in000066400000000000000000000010711475510605700242310ustar00rootroot00000000000000 anthy ja GPL Peng Huang <shawn.p.huang@gmail.com> ibus-anthy @LAYOUT_XML@ Anthy Anthy Input Method 99 @HOTKEYS_XML@ @SYMBOL_XML@ @ICON_PROP_KEY_XML@ @PACKAGE_VERSION@ ibus-anthy ibus-anthy-1.5.17/engine/python3/engine.py000066400000000000000000003355331475510605700204060ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2024 Takao Fujiwara # Copyright (c) 2007-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. import binascii import io import os from os import environ, path import signal import sys from gettext import dgettext from main import get_userhome try: from locale import getpreferredencoding except: pass from gi import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') gi_require_version('Anthy', '9000') from gi.repository import GLib from gi.repository import IBus from gi.repository import Anthy NTH_UNCONVERTED_CANDIDATE = Anthy.NTH_UNCONVERTED_CANDIDATE NTH_KATAKANA_CANDIDATE = Anthy.NTH_KATAKANA_CANDIDATE NTH_HIRAGANA_CANDIDATE = Anthy.NTH_HIRAGANA_CANDIDATE NTH_HALFKANA_CANDIDATE = Anthy.NTH_HALFKANA_CANDIDATE import _config as config from tables import * import jastring from segment import unichar_half_to_full sys.path.append(path.join(config.PKGDATADIR, 'setup')) from anthyprefs import AnthyPrefs _ = lambda a : dgettext('ibus-anthy', a) N_ = lambda a : a UN = lambda a : unicode(a, 'utf-8') printerr = AnthyPrefs.printerr ANTHY_CONFIG_PATH = get_userhome() + '/.anthy' if config.ANTHY_PC == 'anthy' \ else GLib.get_user_config_dir() + '/anthy'; INPUT_MODE_HIRAGANA, \ INPUT_MODE_KATAKANA, \ INPUT_MODE_HALF_WIDTH_KATAKANA, \ INPUT_MODE_LATIN, \ INPUT_MODE_WIDE_LATIN = list(range(5)) CONV_MODE_OFF, \ CONV_MODE_ANTHY, \ CONV_MODE_HIRAGANA, \ CONV_MODE_KATAKANA, \ CONV_MODE_HALF_WIDTH_KATAKANA, \ CONV_MODE_LATIN_0, \ CONV_MODE_LATIN_1, \ CONV_MODE_LATIN_2, \ CONV_MODE_LATIN_3, \ CONV_MODE_WIDE_LATIN_0, \ CONV_MODE_WIDE_LATIN_1, \ CONV_MODE_WIDE_LATIN_2, \ CONV_MODE_WIDE_LATIN_3, \ CONV_MODE_PREDICTION = list(range(14)) SEGMENT_DEFAULT = 0 SEGMENT_SINGLE = 1 << 0 SEGMENT_IMMEDIATE = 1 << 1 CLIPBOARD_RECONVERT = list(range(1)) LINK_DICT_EMBEDDED, \ LINK_DICT_SINGLE = list(range(2)) IMPORTED_EMBEDDED_DICT_DIR = 'imported_words_default.d' IMPORTED_EMBEDDED_DICT_PREFIX = 'ibus__' IMPORTED_SINGLE_DICT_PREFIX = 'imported_words_ibus__' KP_Table = {} for s in dir(IBus): if s.startswith('KEY_KP_'): v = IBus.keyval_from_name(s[7:]) if v: KP_Table[IBus.keyval_from_name(s[4:])] = v for k, v in zip(['KEY_KP_Add', 'KEY_KP_Decimal', 'KEY_KP_Divide', 'KEY_KP_Enter', 'KEY_KP_Equal', 'KEY_KP_Multiply', 'KEY_KP_Separator', 'KEY_KP_Space', 'KEY_KP_Subtract'], ['KEY_plus', 'KEY_period', 'KEY_slash', 'KEY_Return', 'KEY_equal', 'KEY_asterisk', 'KEY_comma', 'KEY_space', 'KEY_minus']): KP_Table[getattr(IBus, k)] = getattr(IBus, v) class Engine(IBus.EngineSimple): __input_mode = None __typing_mode = None __segment_mode = None __dict_mode = None __setup_pid = 0 __prefs = None __keybind = {} __thumb = None __latin_with_shift = True def __init__(self, bus, object_path): if hasattr(IBus.Engine.props, 'has_focus_id'): super(Engine, self).__init__(engine_name="anthy", connection=bus.get_connection(), object_path=object_path, has_focus_id=True) else: super(Engine, self).__init__(engine_name="anthy", connection=bus.get_connection(), object_path=object_path) self.add_table_by_locale(None) # create anthy context if not self.__verify_anthy_journal_file(): return Anthy.GContext.set_logger(0); self.__context = Anthy.GContext() self.__context.set_encoding(Anthy.UTF8_ENCODING) # init state self.__idle_id = 0 self.__prop_dict = {} self.__input_purpose = 0 self.__has_input_purpose = False # OSK mode is designed for OSK on gnome-shell, which always shows # IBus lookup window prior to the preedit and selecting a candidate # causes the commmit instead of the selection. self.__osk_mode = False self.__selected_preedit_commit = False if hasattr(IBus, 'InputPurpose'): self.__has_input_purpose = True try: self.__is_utf8 = (getpreferredencoding().lower() == 'utf-8') except: self.__is_utf8 = False self.__has_update_preedit_text_with_mode = True try: self.__ibus_check_version('1.3') except ValueError as e: printerr('Disable update_preedit_text_with_mode(): %s' % str(e)) self.__has_update_preedit_text_with_mode = False # self.__lookup_table = ibus.LookupTable.new(page_size=9, # cursor_pos=0, # cursor_visible=True, # round=True) size = self.__prefs.get_value('common', 'page-size') self.__lookup_table = IBus.LookupTable.new(page_size=size, cursor_pos=0, cursor_visible=True, round=True) self.__prop_list = self.__init_props() # Do not use self.do_process_key_event to work ISO 14755 # with Ctrl+Shift+u . # The super (parent) method of do_process_key_event is called # loop infinitely if this class overrides it. # self.process_key_event is not accessible too. self.connect('process-key-event', self.__process_key_event) self.connect('destroy', self.__destroy) self.connect('page-down', self.__page_down) self.connect('page-up', self.__page_up) self.connect('candidate-clicked', self.__candidate_clicked) self.__init_signal() # use reset to init values self.__reset() def __ibus_check_version(self, v): major = IBus.MAJOR_VERSION minor = IBus.MINOR_VERSION micro = IBus.MICRO_VERSION if (major, minor, micro) < tuple(map(int, (v.split('.')))): raise ValueError('Required ibus %s but version of ibus is ' \ '%d.%d.%d' % (v, major, minor, micro)) # http://en.sourceforge.jp/ticket/browse.php?group_id=14&tid=33075 def __verify_anthy_journal_file(self): journal = ANTHY_CONFIG_PATH + '/last-record2_default.utf8' try: f = io.open(file=journal, mode='rb') except IOError: return True f.seek(-1, io.SEEK_END) last = f.read(1) f.close() if ord(last) == 0xa: return True from gi.repository import Gtk message= N_("Could not enable Anthy.\n" \ "The end of the content of the file " \ "%s/last-record2_default.utf8 in your home " \ "directory is not '\\n'. I.e. not correct text format.\n" \ "Please fix the file or remove it by manual and " \ "restart IBus.") % ANTHY_CONFIG_PATH printerr(message) dlg = Gtk.MessageDialog(parent=None, flags=Gtk.DialogFlags.MODAL, message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.OK, message_format=_(message)) dlg.run() dlg.destroy() return False # reset values of engine def __reset(self): self.__preedit_ja_string = jastring.JaString(Engine.__typing_mode, self.__latin_with_shift) self.__convert_chars = '' self.__cursor_pos = 0 self.__convert_mode = CONV_MODE_OFF self.__segments = list() self.__lookup_table.clear() self.__lookup_table_visible = False self._MM = 0 self._SS = 0 self._H = 0 self._RMM = 0 self._RSS = 0 if self.__idle_id != 0: GLib.source_remove(self.__idle_id) self.__idle_id = 0 def __init_props(self): anthy_props = IBus.PropList() self.__set_input_mode_props(anthy_props) self.__set_typing_method_props(anthy_props) self.__set_segment_mode_props(anthy_props) self.__set_dict_mode_props(anthy_props) self.__set_dict_config_props(anthy_props) if not self.__prefs.get_value('common', 'show-preferences'): return anthy_props anthy_props.append(IBus.Property(key='setup', label=IBus.Text.new_from_string(_("Preferences - Anthy")), icon=config.ICON_PREFERENCE, tooltip=IBus.Text.new_from_string(_("Configure Anthy")), sensitive=True, visible=True)) return anthy_props def __init_signal(self): signal.signal(signal.SIGHUP, self.__signal_cb) signal.signal(signal.SIGINT, self.__signal_cb) signal.signal(signal.SIGQUIT, self.__signal_cb) signal.signal(signal.SIGABRT, self.__signal_cb) signal.signal(signal.SIGTERM, self.__signal_cb) def __signal_cb(self, signum, object): self.__remove_dict_files() signal.signal(signum, signal.SIG_DFL) os.kill(os.getpid(), signum) def __set_input_mode_props(self, anthy_props): # The class method is kept even if the engine is switched. if Engine.__input_mode == None: # The config value is readonly for initial engine and # the engine keeps the class method in the memory. Engine.__input_mode = INPUT_MODE_HIRAGANA Engine.__input_mode = self.__prefs.get_value('common', 'input-mode') if not self.__prefs.get_value('common', 'show-input-mode'): return # init input mode properties symbol = 'あ' ''' Need to split _() by line for intltool to detect them. ''' # Translators: Specify the order of %s with your translation. # It will be "Input Mode (A)" for example. label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Input mode"), 'symbol' : symbol } input_mode_prop = IBus.Property(key='InputMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(symbol), icon='', tooltip=IBus.Text.new_from_string(_("Switch input mode")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict['InputMode'] = input_mode_prop props = IBus.PropList() props.append(IBus.Property(key='InputMode.Hiragana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Hiragana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='InputMode.Katakana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Katakana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='InputMode.HalfWidthKatakana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Halfwidth Katakana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='InputMode.Latin', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Latin")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='InputMode.WideLatin', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Wide Latin")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__input_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 input_mode_prop.set_sub_props(props) anthy_props.append(input_mode_prop) mode = Engine.__input_mode mode = 'InputMode.' + ['Hiragana', 'Katakana', 'HalfWidthKatakana', 'Latin', 'WideLatin'][mode] self.__input_mode_activate(mode, IBus.PropState.CHECKED) def __set_typing_method_props(self, anthy_props): if Engine.__typing_mode == None: Engine.__typing_mode = jastring.TYPING_MODE_ROMAJI Engine.__typing_mode = self.__prefs.get_value('common', 'typing-method') if not self.__prefs.get_value('common', 'show-typing-method'): return # typing input mode properties symbol = 'R' label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Typing method"), 'symbol' : symbol } typing_mode_prop = IBus.Property(key='TypingMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(symbol), icon='', tooltip=IBus.Text.new_from_string(_("Switch typing method")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict['TypingMode'] = typing_mode_prop props = IBus.PropList() props.append(IBus.Property(key='TypingMode.Romaji', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Romaji")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='TypingMode.Kana', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Kana")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='TypingMode.ThumbShift', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Thumb shift")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__typing_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 typing_mode_prop.set_sub_props(props) anthy_props.append(typing_mode_prop) mode = Engine.__typing_mode mode = 'TypingMode.' + ['Romaji', 'Kana', 'ThumbShift'][mode] self.__typing_mode_activate(mode, IBus.PropState.CHECKED) def __set_segment_mode_props(self, anthy_props): if Engine.__segment_mode == None: Engine.__segment_mode = SEGMENT_DEFAULT Engine.__segment_mode = self.__prefs.get_value('common', 'conversion-segment-mode') if not self.__prefs.get_value('common', 'show-segment-mode'): return symbol = '連' label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Segment mode"), 'symbol' : symbol } segment_mode_prop = IBus.Property(key='SegmentMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(symbol), icon=None, tooltip=IBus.Text.new_from_string(_("Switch conversion mode")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict['SegmentMode'] = segment_mode_prop props = IBus.PropList() props.append(IBus.Property(key='SegmentMode.Multi', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Multiple segment")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='SegmentMode.Single', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Single segment")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='SegmentMode.ImmediateMulti', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Immediate conversion (multiple segment)")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='SegmentMode.ImmediateSingle', prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(_("Immediate conversion (single segment)")), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__segment_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 segment_mode_prop.set_sub_props(props) anthy_props.append(segment_mode_prop) mode = Engine.__segment_mode mode = 'SegmentMode.' + ['Multi', 'Single', 'ImmediateMulti', 'ImmediateSingle'][mode] self.__segment_mode_activate(mode, IBus.PropState.CHECKED) def __set_dict_mode_props(self, anthy_props, update_prop=False): if Engine.__dict_mode == None: Engine.__dict_mode = 0 if not self.__prefs.get_value('common', 'show-dict-mode'): return dicts = self.__prefs.get_value('dict', 'list') short_label = dicts['embedded'].short_label label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Dictionary mode"), 'symbol' : short_label } dict_mode_prop = IBus.Property(key='DictMode', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), symbol=IBus.Text.new_from_string(short_label), icon=None, tooltip=IBus.Text.new_from_string(_("Switch dictionary")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict['DictMode'] = dict_mode_prop props = IBus.PropList() long_label = dicts['embedded'].long_label props.append(IBus.Property(key='DictMode.embedded', prop_type=IBus.PropType.RADIO, # if long_label is UTF-8 label=IBus.Text.new_from_string(_(long_label)), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) files = self.__prefs.get_value('dict', 'files') dicts = self.__prefs.get_value('dict', 'list') for id in order: dict_item = dicts[id] is_cont = False for file in files[id]: if not self.__link_dict_file(dict_item, file): is_cont = True break if is_cont: continue if not dict_item.single: continue key = 'DictMode.' + id long_label = dict_item.long_label # ibus-config 'value-changed' signal updated dict/files but # not dict/file/new yet. if long_label == None: continue if dict_item.is_system: uni_long_label = _(long_label) else: uni_long_label = long_label props.append(IBus.Property(key=key, prop_type=IBus.PropType.RADIO, label=IBus.Text.new_from_string(uni_long_label), icon=None, tooltip=None, sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.get(Engine.__dict_mode).set_state(IBus.PropState.CHECKED) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 dict_mode_prop.set_sub_props(props) if update_prop: # focus-in event will call register_properties(). # Need to switch another IME to update menus on GtkStatusIcon? anthy_props.update_property(dict_mode_prop) else: anthy_props.append(dict_mode_prop) prop_name = self.__dict_mode_get_prop_name(Engine.__dict_mode) if prop_name == None: return self.__dict_mode_activate(prop_name, IBus.PropState.CHECKED) def __set_dict_config_props(self, anthy_props): if not self.__prefs.get_value('common', 'show-dict-config'): return admin_command = self.__prefs.get_value('common', 'dict-admin-command') icon_path = self.__prefs.get_value('common', 'dict-config-icon') if not path.exists(admin_command[0]): return label = _("Dictionary - Anthy") if icon_path and path.exists(icon_path): icon = icon_path else: # Translators: "Dic" means 'dictionary', One kanji may be good. label = _("Dic") icon = '' dict_prop = IBus.Property(key='setup-dict-kasumi', prop_type=IBus.PropType.MENU, label=IBus.Text.new_from_string(label), icon=icon, tooltip=IBus.Text.new_from_string(_("Configure dictionaries")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None) self.__prop_dict['setup-dict-kasumi'] = dict_prop props = IBus.PropList() props.append(IBus.Property(key='setup-dict-kasumi-admin', prop_type=IBus.PropType.NORMAL, label=IBus.Text.new_from_string(_("Edit dictionaries")), icon=icon, tooltip=IBus.Text.new_from_string(_("Launch the dictionary tool")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) props.append(IBus.Property(key='setup-dict-kasumi-word', prop_type=IBus.PropType.NORMAL, label=IBus.Text.new_from_string(_("Add words")), icon=icon, tooltip=IBus.Text.new_from_string(_("Add words to the dictionary")), sensitive=True, visible=True, state=IBus.PropState.UNCHECKED, sub_props=None)) i = 0 while props.get(i) != None: prop = props.get(i) self.__prop_dict[prop.get_key()] = prop i += 1 dict_prop.set_sub_props(props) anthy_props.append(dict_prop) def __get_clipboard(self, clipboard, text, data): clipboard_text = clipboard.wait_for_text () if data == CLIPBOARD_RECONVERT: self.__update_reconvert(clipboard_text) return clipboard_text def __get_single_dict_files(self): order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) files = self.__prefs.get_value('dict', 'files') dicts = self.__prefs.get_value('dict', 'list') single_files = [] for id in order: for file in files[id]: if not path.exists(file): continue dict_item = dicts[id] if dict_item.single: single_files.append(file) return single_files def __remove_dict_files(self): dicts = self.__prefs.get_value('dict', 'list') files = self.__prefs.get_value('dict', 'files') for id in files.keys(): dict_item = dicts[id] for file in files[id]: self.__remove_dict_file(dict_item, file) def update_preedit(self, string, attrs, cursor_pos, visible): text = IBus.Text.new_from_string(string) i = 0 while attrs.get(i) != None: attr = attrs.get(i) text.append_attribute(attr.get_attr_type(), attr.get_value(), attr.get_start_index(), attr.get_end_index()) i += 1 mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if self.__has_update_preedit_text_with_mode and mode == 1: self.update_preedit_text_with_mode(text, cursor_pos, visible, IBus.PreeditFocusMode.COMMIT) else: self.update_preedit_text(text, cursor_pos, visible) def update_aux_string(self, string, attrs, visible): text = IBus.Text.new_from_string(string) i = 0 while attrs.get(i) != None: attr = attrs.get(i) text.append_attribute(attr.get_attr_type(), attr.get_value(), attr.get_start_index(), attr.get_end_index()) i += 1 self.update_auxiliary_text(text, visible) def __page_up(self, obj): # only process cursor down in convert mode if self.__convert_mode != CONV_MODE_ANTHY: return False if not self.__lookup_table.page_up(): return False index = self.__lookup_table.get_cursor_pos() candidate = self.__lookup_table.get_candidate(index).get_text() self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def __page_down(self, obj): # only process cursor down in convert mode if self.__convert_mode != CONV_MODE_ANTHY: return False if not self.__lookup_table.page_down(): return False index = self.__lookup_table.get_cursor_pos() candidate = self.__lookup_table.get_candidate(index).get_text() self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def do_cursor_up(self): # only process cursor down in convert mode # if self.__convert_mode != CONV_MODE_ANTHY: if self.__convert_mode != CONV_MODE_ANTHY and self.__convert_mode != CONV_MODE_PREDICTION: return False if not self.__lookup_table.cursor_up(): return False index = self.__lookup_table.get_cursor_pos() candidate = self.__lookup_table.get_candidate(index).get_text() self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def do_cursor_down(self): # only process cursor down in convert mode # if self.__convert_mode != CONV_MODE_ANTHY: if self.__convert_mode != CONV_MODE_ANTHY and self.__convert_mode != CONV_MODE_PREDICTION: return False if not self.__lookup_table.cursor_down(): return False index = self.__lookup_table.get_cursor_pos() candidate = self.__lookup_table.get_candidate(index).get_text() self.__segments[self.__cursor_pos] = index, candidate self.__invalidate() return True def __candidate_clicked(self, obj, index, button, state): if index == 9: keyval = IBus.KEY_0 else: keyval = IBus.KEY_1 + index prev_cursor_pos = self.__cursor_pos self.__on_key_number(keyval) if self.__osk_mode and prev_cursor_pos == self.__cursor_pos: if self.__idle_id != 0: self.__selected_preedit_commit = True else: self.__on_key_return() def __commit_string(self, text): self.__reset() self.commit_text(IBus.Text.new_from_string(text)) self.__invalidate() def __shrink_segment(self, relative_size): self.__context.resize_segment(self.__cursor_pos, relative_size) nr_segments = self.__context.get_nr_segments() del self.__segments[self.__cursor_pos:] for i in range(self.__cursor_pos, nr_segments): buf = self.__context.get_segment(i, 0) text = buf self.__segments.append((0, text)) self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def __shrink_segment_end(self): while self.__context.get_nr_segments() > 1: self.__context.resize_segment(self.__cursor_pos, 1) nr_segments = self.__context.get_nr_segments() del self.__segments[self.__cursor_pos:] for i in range(self.__cursor_pos, nr_segments): buf = self.__context.get_segment(i, 0) text = buf self.__segments.append((0, text)) self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def do_property_activate(self, prop_name, state): if state == IBus.PropState.CHECKED: if prop_name == None: return elif prop_name.startswith('InputMode.'): self.__input_mode_activate(prop_name, state) return elif prop_name.startswith('TypingMode.'): self.__typing_mode_activate(prop_name, state) return elif prop_name.startswith('SegmentMode.'): self.__segment_mode_activate(prop_name, state) return elif prop_name.startswith('DictMode.'): self.__dict_mode_activate(prop_name, state) return else: if prop_name == 'setup': self.__start_setup() elif prop_name == 'setup-dict-kasumi-admin': self.__start_dict_admin() elif prop_name == 'setup-dict-kasumi-word': self.__start_add_word() else: if prop_name not in self.__prop_dict.keys(): return self.__prop_dict[prop_name].set_state(state) if prop_name == 'DictMode': sub_name = self.__dict_mode_get_prop_name(self.__dict_mode) if sub_name == None: return self.__dict_mode_activate(sub_name, IBus.PropState.CHECKED) def __input_mode_activate(self, prop_name, state): input_modes = { 'InputMode.Hiragana' : (INPUT_MODE_HIRAGANA, 'あ'), 'InputMode.Katakana' : (INPUT_MODE_KATAKANA, 'ア'), 'InputMode.HalfWidthKatakana' : (INPUT_MODE_HALF_WIDTH_KATAKANA, '_ア'), 'InputMode.Latin' : (INPUT_MODE_LATIN, '_A'), 'InputMode.WideLatin' : (INPUT_MODE_WIDE_LATIN, 'A'), } if prop_name not in input_modes: printerr('Unknown prop_name = %s' % prop_name) return mode, symbol = input_modes[prop_name] if 'InputMode' not in self.__prop_dict.keys(): # Disable to show input mode with ibus-set-anthy Engine.__input_mode = mode return self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Input mode"), 'symbol' : symbol } Engine.__input_mode = mode prop = self.__prop_dict['InputMode'] prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__reset() self.__invalidate() def __typing_mode_activate(self, prop_name, state): if 'TypingMode' not in self.__prop_dict.keys(): # Disable to show typing mode with ibus-set-anthy return typing_modes = { 'TypingMode.Romaji' : (jastring.TYPING_MODE_ROMAJI, 'R'), 'TypingMode.Kana' : (jastring.TYPING_MODE_KANA, 'か'), 'TypingMode.ThumbShift' : (jastring.TYPING_MODE_THUMB_SHIFT, '親'), } if prop_name not in typing_modes: printerr('Unknown prop_name = %s' % prop_name) return self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) if prop_name == 'TypingMode.ThumbShift': self._reset_thumb() mode, symbol = typing_modes[prop_name] label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Typing method"), 'symbol' : symbol } Engine.__typing_mode = mode prop = self.__prop_dict['TypingMode'] prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__reset() self.__invalidate() def __refresh_typing_mode_property(self): if 'TypingMode' not in self.__prop_dict: # Disable to show typing mode with ibus-set-anthy return prop = self.__prop_dict['TypingMode'] modes = { jastring.TYPING_MODE_ROMAJI : ('TypingMode.Romaji', 'R'), jastring.TYPING_MODE_KANA : ('TypingMode.Kana', 'か'), jastring.TYPING_MODE_THUMB_SHIFT : ('TypingMode.ThumbShift', '親'), } prop_name, symbol = modes.get(Engine.__typing_mode, (None, None)) if prop_name == None or symbol == None: return label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Typing method"), 'symbol' : symbol } _prop = self.__prop_dict[prop_name] _prop.set_state(IBus.PropState.CHECKED) self.update_property(_prop) prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) def __segment_mode_activate(self, prop_name, state): if 'SegmentMode' not in self.__prop_dict.keys(): # Disable to show segment mode with ibus-set-anthy return segment_modes = { 'SegmentMode.Multi' : (SEGMENT_DEFAULT, '連'), 'SegmentMode.Single' : (SEGMENT_SINGLE, '単'), 'SegmentMode.ImmediateMulti' : (SEGMENT_IMMEDIATE, '逐|連'), 'SegmentMode.ImmediateSingle' : (SEGMENT_IMMEDIATE | SEGMENT_SINGLE, '逐|単'), } if prop_name not in segment_modes: printerr('Unknown prop_name = %s' % prop_name) return self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) mode, symbol = segment_modes[prop_name] label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Segment mode"), 'symbol' : symbol } Engine.__segment_mode = mode prop = self.__prop_dict['SegmentMode'] prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__reset() self.__invalidate() def __dict_mode_get_prop_name(self, mode): if mode == 0: id = 'embedded' else: single_files = self.__get_single_dict_files() file = single_files[mode - 1] id = self.__get_dict_id_from_file(file) return 'DictMode.' + id def __dict_mode_activate(self, prop_name, state): if prop_name not in list(self.__prop_dict.keys()): # The prop_name is added. Need to restart. return i = prop_name.find('.') if i < 0: return # The id is already quoted. id = prop_name[i + 1:] file = None single_files = self.__get_single_dict_files() if id == 'embedded': pass else: found = False for file in single_files: if id == self.__get_quoted_id(file): found = True break if found == False: return if id == 'embedded': dict_name = 'default' Engine.__dict_mode = 0 else: if file not in single_files: printerr('Index error', file, single_files) return dict_name = 'ibus__' + id Engine.__dict_mode = single_files.index(file) + 1 self.__prop_dict[prop_name].set_state(state) self.update_property(self.__prop_dict[prop_name]) self.__context.init_personality() # dict_name is unicode but the argument is str. self.__context.do_set_personality(str(dict_name)) prop = self.__prop_dict['DictMode'] dicts = self.__prefs.get_value('dict', 'list') symbol = dicts[id].short_label label = _("%(description)s (%(symbol)s)") % \ { 'description' : _("Dictionary mode"), 'symbol' : symbol } prop.set_symbol(IBus.Text.new_from_string(symbol)) prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) def __argb(self, a, r, g, b): return ((a & 0xff)<<24) + ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff) def __rgb(self, r, g, b): return self.__argb(255, r, g, b) def do_focus_in(self): self.do_focus_in_id(None, None) def do_focus_out(self): self.do_focus_out_id(None) def do_focus_in_id(self, object_path, client): self.register_properties(self.__prop_list) self.__refresh_typing_mode_property() mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if mode == 2: self.__update_input_chars() # self.__reset() # self.__invalidate() size = self.__prefs.get_value('common', 'page-size') if size != self.__lookup_table.get_page_size(): self.__lookup_table.set_page_size(size) def do_focus_out_id(self, object_path): if self.__has_input_purpose: self.__input_purpose = 0 mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if mode == 0 or mode == 1: self.__reset() self.__invalidate() def do_set_content_type(self, purpose, hints): if self.__has_input_purpose: self.__input_purpose = purpose def do_disable(self): self.__reset() self.__invalidate() def do_reset(self): mode = self.__prefs.get_value('common', 'behavior-on-focus-out') if mode == 2: return self.__reset() self.__invalidate() def do_set_capabilities(self, caps): self.__osk_mode = True if caps & IBus.Capabilite.OSK else False def __destroy(self, obj): if self.__idle_id != 0: GLib.source_remove(self.__idle_id) self.__idle_id = 0 # It seems do_destroy() is called when launch_engine() is called. #self.__remove_dict_files() # It seems super.destroy() does not unref the engine. def __join_all_segments(self): while True: nr_segments = self.__context.get_nr_segments() seg = nr_segments - self.__cursor_pos if seg > 1: self.__context.resize_segment(self.__cursor_pos, 1) else: break def __normalize_preedit(self, preedit): if not self.__is_utf8: return preedit for key in list(romaji_normalize_rule.keys()): if preedit.find(key) >= 0: for value in romaji_normalize_rule[key]: preedit = preedit.replace(key, value) return preedit # begine convert def __begin_anthy_convert(self): if Engine.__segment_mode & SEGMENT_IMMEDIATE: self.__end_anthy_convert() if self.__convert_mode == CONV_MODE_ANTHY: return self.__convert_mode = CONV_MODE_ANTHY # text, cursor = self.__preedit_ja_string.get_hiragana() text, cursor = self.__preedit_ja_string.get_hiragana(True) text = self.__normalize_preedit(text) self.__context.set_string(text) if Engine.__segment_mode & SEGMENT_SINGLE: self.__join_all_segments() nr_segments = self.__context.get_nr_segments() for i in range(0, nr_segments): buf = self.__context.get_segment(i, 0) text = buf self.__segments.append((0, text)) if Engine.__segment_mode & SEGMENT_IMMEDIATE: self.__cursor_pos = nr_segments - 1 else: self.__cursor_pos = 0 self.__fill_lookup_table() if self.__osk_mode: self.__lookup_table_visible = True else: self.__lookup_table_visible = False def __end_anthy_convert(self): if self.__convert_mode == CONV_MODE_OFF: return self.__convert_mode = CONV_MODE_OFF self.__convert_chars = '' self.__segments = list() self.__cursor_pos = 0 self.__lookup_table.clear() self.__lookup_table_visible = False def __end_convert(self): self.__end_anthy_convert() # test case 'verudhi' can show U+3046 + U+309B and U+3094 def __candidate_cb(self, candidate): if not self.__is_utf8: return for key in list(romaji_utf8_rule.keys()): if candidate.find(key) >= 0: for value in romaji_utf8_rule[key]: candidate = candidate.replace(key, value) self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate)) def __fill_lookup_table(self): if self.__convert_mode == CONV_MODE_PREDICTION: nr_predictions = self.__context.get_nr_predictions() # fill lookup_table self.__lookup_table.clear() for i in range(0, nr_predictions): buf = self.__context.get_prediction(i) candidate = buf self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate)) self.__candidate_cb(candidate) return # get segment stat nr_candidates = self.__context.get_nr_candidates(self.__cursor_pos) # fill lookup_table self.__lookup_table.clear() for i in range(0, nr_candidates): buf = self.__context.get_segment(self.__cursor_pos, i) candidate = buf self.__lookup_table.append_candidate(IBus.Text.new_from_string(candidate)) self.__candidate_cb(candidate) def __invalidate(self): if self.__idle_id != 0: return self.__idle_id = GLib.idle_add(self.__update, priority = GLib.PRIORITY_LOW) # def __get_preedit(self): def __get_preedit(self, commit=False): if Engine.__input_mode == INPUT_MODE_HIRAGANA: # text, cursor = self.__preedit_ja_string.get_hiragana() text, cursor = self.__preedit_ja_string.get_hiragana(commit) elif Engine.__input_mode == INPUT_MODE_KATAKANA: # text, cursor = self.__preedit_ja_string.get_katakana() text, cursor = self.__preedit_ja_string.get_katakana(commit) elif Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA: # text, cursor = self.__preedit_ja_string.get_half_width_katakana() text, cursor = self.__preedit_ja_string.get_half_width_katakana(commit) else: text, cursor = '', 0 return text, cursor def __update_input_chars(self): text, cursor = self.__get_preedit() attrs = IBus.AttrList() attrs.append(IBus.attr_underline_new( IBus.AttrUnderline.SINGLE, 0, len(text))) self.update_preedit(text, attrs, cursor, not self.__preedit_ja_string.is_empty()) self.update_aux_string('', IBus.AttrList(), False) self.update_lookup_table(self.__lookup_table, self.__lookup_table_visible) def __update_convert_chars(self): # if self.__convert_mode == CONV_MODE_ANTHY: if self.__convert_mode == CONV_MODE_ANTHY or self.__convert_mode == CONV_MODE_PREDICTION: self.__update_anthy_convert_chars() return if self.__convert_mode == CONV_MODE_HIRAGANA: # text, cursor = self.__preedit_ja_string.get_hiragana() text, cursor = self.__preedit_ja_string.get_hiragana(True) elif self.__convert_mode == CONV_MODE_KATAKANA: # text, cursor = self.__preedit_ja_string.get_katakana() text, cursor = self.__preedit_ja_string.get_katakana(True) elif self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: # text, cursor = self.__preedit_ja_string.get_half_width_katakana() text, cursor = self.__preedit_ja_string.get_half_width_katakana(True) elif self.__convert_mode == CONV_MODE_LATIN_0: text, cursor = self.__preedit_ja_string.get_latin() if text == text.lower(): self.__convert_mode = CONV_MODE_LATIN_1 elif self.__convert_mode == CONV_MODE_LATIN_1: text, cursor = self.__preedit_ja_string.get_latin() text = text.lower() elif self.__convert_mode == CONV_MODE_LATIN_2: text, cursor = self.__preedit_ja_string.get_latin() text = text.upper() elif self.__convert_mode == CONV_MODE_LATIN_3: text, cursor = self.__preedit_ja_string.get_latin() text = text.capitalize() elif self.__convert_mode == CONV_MODE_WIDE_LATIN_0: text, cursor = self.__preedit_ja_string.get_wide_latin() if text == text.lower(): self.__convert_mode = CONV_MODE_WIDE_LATIN_1 elif self.__convert_mode == CONV_MODE_WIDE_LATIN_1: text, cursor = self.__preedit_ja_string.get_wide_latin() text = text.lower() elif self.__convert_mode == CONV_MODE_WIDE_LATIN_2: text, cursor = self.__preedit_ja_string.get_wide_latin() text = text.upper() elif self.__convert_mode == CONV_MODE_WIDE_LATIN_3: text, cursor = self.__preedit_ja_string.get_wide_latin() text = text.capitalize() self.__convert_chars = text attrs = IBus.AttrList() attrs.append(IBus.attr_underline_new( IBus.AttrUnderline.SINGLE, 0, len(text))) attrs.append(IBus.attr_background_new(self.__rgb(200, 200, 240), 0, len(text))) attrs.append(IBus.attr_foreground_new(self.__rgb(0, 0, 0), 0, len(text))) self.update_preedit(text, attrs, len(text), True) self.update_aux_string('', IBus.AttrList(), self.__lookup_table_visible) self.update_lookup_table(self.__lookup_table, self.__lookup_table_visible) def __update_anthy_convert_chars(self): self.__convert_chars = '' pos = 0 for i, (seg_index, text) in enumerate(self.__segments): self.__convert_chars += text if i < self.__cursor_pos: pos += len(text) attrs = IBus.AttrList() attrs.append(IBus.attr_underline_new( IBus.AttrUnderline.SINGLE, 0, len(self.__convert_chars))) attrs.append(IBus.attr_background_new(self.__rgb(200, 200, 240), pos, pos + len(self.__segments[self.__cursor_pos][1]))) attrs.append(IBus.attr_foreground_new(self.__rgb(0, 0, 0), pos, pos + len(self.__segments[self.__cursor_pos][1]))) self.update_preedit(self.__convert_chars, attrs, pos, True) aux_string = '( %d / %d )' % (self.__lookup_table.get_cursor_pos() + 1, self.__lookup_table.get_number_of_candidates()) self.update_aux_string(aux_string, IBus.AttrList(), self.__lookup_table_visible) self.update_lookup_table(self.__lookup_table, self.__lookup_table_visible) def __update(self): if self.__convert_mode == CONV_MODE_OFF: self.__update_input_chars() else: self.__update_convert_chars() self.__idle_id = 0 if self.__osk_mode and self.__selected_preedit_commit: self.__on_key_return() self.__selected_preedit_commit = False def __on_key_return(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_OFF: # text, cursor = self.__get_preedit() text, cursor = self.__get_preedit(True) self.__commit_string(text) elif self.__convert_mode == CONV_MODE_ANTHY: for i, (seg_index, text) in enumerate(self.__segments): self.__context.commit_segment(i, seg_index) self.__commit_string(self.__convert_chars) elif self.__convert_mode == CONV_MODE_PREDICTION: self.__context.commit_prediction(self.__segments[0][0]) self.__commit_string(self.__convert_chars) else: self.__commit_string(self.__convert_chars) return True def __on_key_escape(self): if self.__preedit_ja_string.is_empty(): return False self.__reset() self.__invalidate() return True def __on_key_back_space(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode != CONV_MODE_OFF: if self.__lookup_table_visible: if self.__lookup_table.get_number_of_candidates() > 0: self.__lookup_table.set_cursor_pos(0) candidate = self.__lookup_table.get_candidate(0).get_text() self.__segments[self.__cursor_pos] = 0, candidate if not self.__osk_mode: self.__lookup_table_visible = False elif self.__segments[self.__cursor_pos][0] != \ NTH_UNCONVERTED_CANDIDATE: buf = self.__context.get_segment(self.__cursor_pos, NTH_UNCONVERTED_CANDIDATE) self.__segments[self.__cursor_pos] = \ NTH_UNCONVERTED_CANDIDATE, buf #elif self._chk_mode('25'): ''' # FIXME: Delete the last char in the active segment. # # If we are able to delete a char in the active segment, # we also should be able to add a char in the active segment. # Currently plain preedit, no segment mode, i.e. # using self.__preedit_ja_string, can delete or add a char # but anthy active segoment mode, i.e. # using self.__segments, can not delete or add a char. # Deleting a char could be easy here but adding a char is # difficult because we need to update both self.__segments # and self.__preedit_ja_string but self.__preedit_ja_string # has no segment. To convert self.__segments to # self.__preedit_ja_string, we may use the reconvert mode # but no idea to convert keyvals to hiragana # in self__on_key_common() with multiple key typings. # Delete a char in the active segment all_text = '' nr_segments = self.__context.get_nr_segments() for i in xrange(0, nr_segments): buf = self.__context.get_segment(i, NTH_UNCONVERTED_CANDIDATE) text = buf if i == self.__cursor_pos and len(text) > 0: text = text[:len(text) - 1] all_text += text if all_text == '': return # Set self.__preedit_ja_string by anthy context. self.__preedit_ja_string = jastring.JaString(Engine.__typing_mode, self.__latin_with_shift) self.__convert_chars = self.__normalize_preedit(all_text) for i in xrange(0, len(self.__convert_chars)): keyval = self.__convert_chars[i] self.__preedit_ja_string.insert(chr(ord(keyval))) self.__context.set_string(self.__convert_chars) # Set self.__segments by anty context # for editable self.__segments, # save NTH_UNCONVERTED_CANDIDATE nr_segments = self.__context.get_nr_segments() if self.__cursor_pos >= nr_segments and \ nr_segments > 0: self.__cursor_pos = nr_segments - 1 for i in xrange(self.__cursor_pos, nr_segments): if i == self.__cursor_pos: index = NTH_UNCONVERTED_CANDIDATE else: index = 0 buf = self.__context.get_segment(i, index) text = buf self.__segments[i] = index, text # Update self.__lookup_table self.__fill_lookup_table() ''' else: self.__end_convert() else: self.__preedit_ja_string.remove_before() self.__invalidate() return True def __on_key_delete(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode != CONV_MODE_OFF: self.__end_convert() else: self.__preedit_ja_string.remove_after() self.__invalidate() return True '''def __on_key_hiragana_katakana(self): if self.__convert_mode == CONV_MODE_ANTHY: self.__end_anthy_convert() if Engine.__input_mode >= INPUT_MODE_HIRAGANA and \ Engine.__input_mode < INPUT_MODE_HALF_WIDTH_KATAKANA: Engine.__input_mode += 1 else: Engine.__input_mode = INPUT_MODE_HIRAGANA modes = { INPUT_MODE_HIRAGANA: 'あ', INPUT_MODE_KATAKANA: 'ア', INPUT_MODE_HALF_WIDTH_KATAKANA: '_ア' } prop = self.__prop_dict[u'InputMode'] label = modes[Engine.__input_mode] prop.set_label(IBus.Text.new_from_string(label)) self.update_property(prop) self.__invalidate() return True''' '''def __on_key_muhenka(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__end_anthy_convert() new_mode = CONV_MODE_HIRAGANA if self.__convert_mode < CONV_MODE_WIDE_LATIN_3 and \ self.__convert_mode >= CONV_MODE_HIRAGANA : self.__convert_mode += 1 else: self.__convert_mode = CONV_MODE_HIRAGANA self.__invalidate() return True''' '''def __on_key_henkan(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode != CONV_MODE_ANTHY: self.__begin_anthy_convert() self.__invalidate() elif self.__convert_mode == CONV_MODE_ANTHY: self.__lookup_table_visible = True self.do_cursor_down() return True''' '''def __on_key_space(self, wide=False): if Engine.__input_mode == INPUT_MODE_WIDE_LATIN or wide: # Input Wide space U+3000 wide_char = symbol_rule[chr(IBus.KEY_space)] self.__commit_string(wide_char) return True if self.__preedit_ja_string.is_empty(): if Engine.__input_mode in (INPUT_MODE_HIRAGANA, INPUT_MODE_KATAKANA): # Input Wide space U+3000 wide_char = symbol_rule[chr(IBus.KEY_space)] self.__commit_string(wide_char) return True else: # Input Half space U+0020 self.__commit_string(chr(IBus.KEY_space)) return True if self.__convert_mode != CONV_MODE_ANTHY: self.__begin_anthy_convert() self.__invalidate() elif self.__convert_mode == CONV_MODE_ANTHY: self.__lookup_table_visible = True self.do_cursor_down() return True''' def __on_key_up(self): if self.__preedit_ja_string.is_empty(): return False self.__lookup_table_visible = True self.do_cursor_up() return True def __on_key_down(self): if self.__preedit_ja_string.is_empty(): return False self.__lookup_table_visible = True self.do_cursor_down() return True def __on_key_page_up(self): if self.__preedit_ja_string.is_empty(): return False if self.__lookup_table_visible == True: self.__page_up(self) return True def __on_key_page_down(self): if self.__preedit_ja_string.is_empty(): return False if self.__lookup_table_visible == True: self.__page_down(self) return True '''def __on_key_left(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_OFF: self.__preedit_ja_string.move_cursor(-1) self.__invalidate() return True if self.__convert_mode != CONV_MODE_ANTHY: return True if self.__cursor_pos == 0: return True self.__cursor_pos -= 1 self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True''' def __on_key_right(self): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_OFF: self.__preedit_ja_string.move_cursor(1) self.__invalidate() return True if self.__convert_mode != CONV_MODE_ANTHY: return True if self.__cursor_pos + 1 >= len(self.__segments): return True self.__cursor_pos += 1 if not self.__osk_mode: self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def __on_key_number(self, keyval): if self.__convert_mode != CONV_MODE_ANTHY: return False if not self.__lookup_table_visible: return False if keyval == IBus.KEY_0: keyval = IBus.KEY_9 + 1 index = keyval - IBus.KEY_1 return self.__on_candidate_index_in_page(index) def __on_key_conv(self, mode): if self.__preedit_ja_string.is_empty(): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__end_anthy_convert() if mode == 0 or mode == 1: if self.__convert_mode == CONV_MODE_HIRAGANA + mode: return True self.__convert_mode = CONV_MODE_HIRAGANA + mode elif mode == 2: if self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: return True self.__convert_mode = CONV_MODE_HALF_WIDTH_KATAKANA elif mode == 3: if CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3: self.__convert_mode += 1 if self.__convert_mode > CONV_MODE_WIDE_LATIN_3: self.__convert_mode = CONV_MODE_WIDE_LATIN_1 else: self.__convert_mode = CONV_MODE_WIDE_LATIN_0 elif mode == 4: if CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: self.__convert_mode += 1 if self.__convert_mode > CONV_MODE_LATIN_3: self.__convert_mode = CONV_MODE_LATIN_1 else: self.__convert_mode = CONV_MODE_LATIN_0 else: printerr('Unkown convert mode (%d)!' % mode) return False self.__invalidate() return True def __on_key_common(self, keyval, state=0): # If use-system-layout is FALSE in ibus 1.4.y or lower, # ibus converts the keymap and ibus-anthy needed to use # self.__commit_string # ibus 1.5.y uses XKB directly so Latin mode can return FALSE. if Engine.__input_mode == INPUT_MODE_LATIN: return False elif Engine.__input_mode == INPUT_MODE_WIDE_LATIN: # Input Wide Latin chars char = chr(keyval) wide_char = None#symbol_rule.get(char, None) if wide_char == None: wide_char = unichar_half_to_full(char) self.__commit_string(wide_char) return True # Input Japanese if Engine.__segment_mode & SEGMENT_IMMEDIATE: # Commit nothing pass elif self.__convert_mode == CONV_MODE_ANTHY: for i, (seg_index, text) in enumerate(self.__segments): self.__context.commit_segment(i, seg_index) self.__commit_string(self.__convert_chars) elif self.__convert_mode != CONV_MODE_OFF: self.__commit_string(self.__convert_chars) # 'n' + '\'' == 'nn' in romaji if (keyval >= ord('A') and keyval <= ord('Z')) or \ (keyval >= ord('a') and keyval <= ord('z')): shift = (state & IBus.ModifierType.SHIFT_MASK) != 0 else: shift = False self.__preedit_ja_string.set_shift(shift) self.__preedit_ja_string.insert(chr(keyval)) if Engine.__segment_mode & SEGMENT_IMMEDIATE: self.__begin_anthy_convert() self.__invalidate() return True #======================================================================= @classmethod def CONFIG_RELOADED(cls): if config.DEBUG: print('RELOADED') if not cls.__prefs: cls.__prefs = AnthyPrefs() cls.__prefs.connect('changed', cls.CONFIG_VALUE_CHANGED) cls._init_prefs() cls.__keybind = cls._mk_keybind() jastring.JaString.SET_PREFS(cls.__prefs) @classmethod def CONFIG_VALUE_CHANGED(cls, prefs, section, key, variant): if config.DEBUG: print('VALUE_CHAMGED =', section, key, variant) if section == 'shortcut': cls.__keybind = cls._mk_keybind() elif section == 'common': if key == 'shortcut-type': cls.__keybind = cls._mk_keybind() elif key == 'latin-with-shift': value = prefs.get_value(section, key) cls.__latin_with_shift = value jastring.JaString.RESET(cls.__prefs, section, key, value) elif section == 'kana-typing-rule': value = prefs.get_value(section, key) jastring.JaString.RESET(cls.__prefs, section, key, value) @classmethod def _init_prefs(cls): prefs = cls.__prefs value = prefs.get_value('common', 'latin-with-shift') cls.__latin_with_shift = value @classmethod def _mk_keybind(cls): keybind = {} sec = cls._get_shortcut_type() shortcuts = cls.__prefs.get_value('shortcut', sec) for k in shortcuts.keys(): cmd = '_Engine__cmd_' + k for s in shortcuts[k]: keybind.setdefault(cls._s_to_key(s), []).append(cmd) return keybind @classmethod def _get_shortcut_type(cls): try: t = cls.__prefs.get_value('common', 'shortcut-type') except: t = 'default' return t @classmethod def _s_to_key(cls, s): keyval = IBus.keyval_from_name(s.split('+')[-1]) s = s.lower() state = ('shift+' in s and IBus.ModifierType.SHIFT_MASK or 0) | ( 'ctrl+' in s and IBus.ModifierType.CONTROL_MASK or 0) | ( 'alt+' in s and IBus.ModifierType.MOD1_MASK or 0) return cls._mk_key(keyval, state) @classmethod def _reset_thumb(cls): if cls.__thumb == None: import thumb cls.__thumb = thumb.ThumbShiftKeyboard(cls.__prefs) else: cls.__thumb.reset() @staticmethod def _mk_key(keyval, state): if state & (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK): if keyval < 0xff and \ chr(keyval) in '!"#$%^\'()*+,-./:;<=>?@[\\]^_`{|}~': state |= IBus.ModifierType.SHIFT_MASK elif IBus.KEY_a <= keyval <= IBus.KEY_z: keyval -= (IBus.KEY_a - IBus.KEY_A) return repr([int(state), int(keyval)]) def __process_key_event(self, obj, keyval, keycode, state): try: return self.__process_key_event_internal2(keyval, keycode, state) except: import traceback traceback.print_exc() return False def __process_key_event_thumb(self, keyval, keycode, state): if self.__thumb == None: self._reset_thumb() def on_timeout(keyval): if self._MM: insert(self.__thumb.get_char(self._MM)[self._SS]) else: cmd_exec([0, RS(), LS()][self._SS]) self._H = None def start(t): self._H = GLib.timeout_add(t, on_timeout, keyval) def stop(): if self._H: GLib.source_remove(self._H) self._H = None return True return False def insert(keyval): try: self._MM = self._SS = 0 ret = self.__on_key_common(ord(keyval)) if (keyval in self.__prefs.get_value('common', 'trigger-periods')): behavior = self.__prefs.get_value('common', 'behavior-on-period') if behavior == 1: return self.__cmd_convert(keyval, state) elif behavior == 2: return self.__cmd_commit(keyval, state) return ret except: pass def cmd_exec(keyval, state=0): key = self._mk_key(keyval, state) for cmd in self.__keybind.get(key, []): if config.DEBUG: print('cmd =', cmd) try: if getattr(self, cmd)(keyval, state): return True except Exception as err: printerr('Error command: %s: %s' % (cmd, str(err))) return False def RS(): return self.__thumb.get_rs() def LS(): return self.__thumb.get_ls() def T1(): return self.__thumb.get_t1() def T2(): return self.__thumb.get_t2() state = state & (IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK | IBus.ModifierType.RELEASE_MASK) if keyval in KP_Table and self.__prefs.get_value('common', 'ten-key-mode'): keyval = KP_Table[keyval] if state & IBus.ModifierType.RELEASE_MASK: if keyval == self._MM: if stop(): insert(self.__thumb.get_char(self._MM)[self._SS]) self._MM = 0 elif (1 if keyval == RS() else 2) == self._SS: if stop(): cmd_exec([0, RS(), LS()][self._SS]) self._SS = 0 if keyval in [RS(), LS()]: self._RSS = 0 elif keyval == self._RMM: self._RMM = 0 else: if keyval in [LS(), RS()] and state == 0: if self._SS: stop() cmd_exec([0, RS(), LS()][self._SS]) self._SS = 1 if keyval == RS() else 2 start(T1()) elif self._MM: stop() self._RMM = self._MM self._RSS = 1 if keyval == RS() else 2 insert(self.__thumb.get_char(self._MM)[1 if keyval == RS() else 2]) else: if self._RSS == (1 if keyval == RS() else 2): if self._RMM: insert(self.__thumb.get_char(self._RMM)[self._RSS]) else: self._SS = 1 if keyval == RS() else 2 start(T1()) elif keyval in self.__thumb.get_chars() and state == 0: if self._MM: stop() insert(self.__thumb.get_char(self._MM)[self._SS]) start(T2()) self._MM = keyval elif self._SS: stop() self._RMM = keyval self._RSS = self._SS insert(self.__thumb.get_char(keyval)[self._SS]) else: if self._RMM == keyval: if self._RSS: insert(self.__thumb.get_char(self._RMM)[self._RSS]) else: if cmd_exec(keyval, state): return True start(T2()) self._MM = keyval else: if self._MM: stop() insert(self.__thumb.get_char(self._MM)[self._SS]) elif self._SS: stop() cmd_exec([0, RS(), LS()][self._SS]) if cmd_exec(keyval, state): return True elif 0x21 <= keyval <= 0x7e and state & \ (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK) == 0: if state & IBus.ModifierType.SHIFT_MASK: insert(self.__thumb.get_shift_char(keyval, chr(keyval))) elif self._SS == 0: insert(chr(keyval)) else: if not self.__preedit_ja_string.is_empty(): return True return False return True def __process_key_event_internal2(self, keyval, keycode, state): if self.__has_input_purpose and \ self.__input_purpose == IBus.InputPurpose.PASSWORD: return False if Engine.__typing_mode == jastring.TYPING_MODE_THUMB_SHIFT and \ Engine.__input_mode not in [INPUT_MODE_LATIN, INPUT_MODE_WIDE_LATIN]: return self.__process_key_event_thumb(keyval, keycode, state) is_press = (state & IBus.ModifierType.RELEASE_MASK) == 0 state = state & (IBus.ModifierType.SHIFT_MASK | IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK | IBus.ModifierType.MOD4_MASK) # ignore key release events if not is_press: return False if keyval in KP_Table and self.__prefs.get_value('common', 'ten-key-mode'): keyval = KP_Table[keyval] key = self._mk_key(keyval, state) for cmd in self.__keybind.get(key, []): if config.DEBUG: print('cmd =', cmd) try: if getattr(self, cmd)(keyval, state): return True except Exception as err: printerr('Error command: %s: %s' % (cmd, str(err))) # If input mode is not LATIN, eat Ctrl+Shift+u hex_mod_mask = IBus.ModifierType.SHIFT_MASK | \ IBus.ModifierType.CONTROL_MASK if Engine.__input_mode != INPUT_MODE_LATIN and \ keyval == IBus.KEY_U and \ state & hex_mod_mask == hex_mod_mask: return True if state & (IBus.ModifierType.CONTROL_MASK | \ IBus.ModifierType.MOD1_MASK | \ IBus.ModifierType.MOD4_MASK): return False if (IBus.KEY_exclam <= keyval <= IBus.KEY_asciitilde or keyval == IBus.KEY_yen): if Engine.__typing_mode == jastring.TYPING_MODE_KANA: if keyval == IBus.KEY_0 and state == IBus.ModifierType.SHIFT_MASK: keyval = IBus.KEY_asciitilde elif keyval == IBus.KEY_backslash and keycode in [132-8, 133-8]: keyval = IBus.KEY_yen ret = self.__on_key_common(keyval, state) if (Engine.__input_mode != INPUT_MODE_LATIN and chr(keyval) in self.__prefs.get_value('common', 'trigger-periods')): behavior = self.__prefs.get_value('common', 'behavior-on-period') if behavior == 1: return self.__cmd_convert(keyval, state) elif behavior == 2: return self.__cmd_commit(keyval, state) return ret else: if not self.__preedit_ja_string.is_empty(): return True return False def _chk_mode(self, mode): if '0' in mode and self.__preedit_ja_string.is_empty(): return True if self.__convert_mode == CONV_MODE_OFF: if '1' in mode and not self.__preedit_ja_string.is_empty(): return True elif self.__convert_mode == CONV_MODE_ANTHY: if '2' in mode and not self.__lookup_table_visible: return True elif self.__convert_mode == CONV_MODE_PREDICTION: if '3' in mode and not self.__lookup_table_visible: return True else: if '4' in mode: return True if '5' in mode and self.__lookup_table_visible: return True return False def __get_quoted_id(self, file): id = file has_mbcs = False for i in range(0, len(id)): if ord(id[i]) >= 0x7f: has_mbcs = True break if has_mbcs: id = str(binascii.hexlify(id.encode()), 'ascii') if id.find('/') >=0: id = id[id.rindex('/') + 1:] if id.find('.') >=0: id = id[:id.rindex('.')] if id.startswith('0x'): id = str(binascii.hexlify(id.encode()), 'ascii') has_mbcs = True if has_mbcs: id = '0x' + id return id def __get_dict_id_from_file(self, file): return self.__get_quoted_id(file) def __link_dict_file_with_mode(self, id, file, link_mode): if id == None: return if link_mode == LINK_DICT_EMBEDDED: directory = ANTHY_CONFIG_PATH + '/' + IMPORTED_EMBEDDED_DICT_DIR name = IMPORTED_EMBEDDED_DICT_PREFIX + id elif link_mode == LINK_DICT_SINGLE: directory = ANTHY_CONFIG_PATH name = IMPORTED_SINGLE_DICT_PREFIX + id else: return if path.exists(directory): if not path.isdir(directory): printerr(directory + ' is not a directory') return else: os.makedirs(directory, 0o700) backup_dir = os.getcwd() os.chdir(directory) if path.lexists(directory + '/' + name): if path.islink(directory + '/' + name): printerr('Removing ' + name) os.unlink(directory + '/' + name) else: alternate = name + str(os.getpid()) printerr('Moving ' + name + ' to ' + alternate) os.rename(name, alternate) os.symlink(file, directory + '/' + name) if backup_dir != None: os.chdir(backup_dir) def __remove_dict_file_with_mode(self, id, file, link_mode): if id == None: return if link_mode == LINK_DICT_EMBEDDED: directory = ANTHY_CONFIG_PATH + '/' + IMPORTED_EMBEDDED_DICT_DIR name = IMPORTED_EMBEDDED_DICT_PREFIX + id elif link_mode == LINK_DICT_SINGLE: directory = ANTHY_CONFIG_PATH name = IMPORTED_SINGLE_DICT_PREFIX + id else: return if path.exists(directory): if not path.isdir(directory): printerr(directory + ' is not a directory') return backup_dir = os.getcwd() os.chdir(directory) if path.lexists(directory + '/' + name): os.unlink(directory + '/' + name) if backup_dir != None: os.chdir(backup_dir) def __link_dict_file(self, dict_item, file): if not path.exists(file): printerr(file + ' does not exist') return False id = dict_item.id if dict_item.embed: self.__link_dict_file_with_mode(id, file, LINK_DICT_EMBEDDED) if dict_item.single: self.__link_dict_file_with_mode(id, file, LINK_DICT_SINGLE) return True def __remove_dict_file(self, dict_item, file): id = dict_item.id if dict_item.embed: self.__remove_dict_file_with_mode(id, file, LINK_DICT_EMBEDDED) if dict_item.single: self.__remove_dict_file_with_mode(id, file, LINK_DICT_SINGLE) #mod_keys def __set_input_mode(self, mode): self.__input_mode_activate(mode, IBus.PropState.CHECKED) self.__reset() self.__invalidate() return True def __unset_current_input_mode(self): modes = { INPUT_MODE_HIRAGANA: 'InputMode.Hiragana', INPUT_MODE_KATAKANA: 'InputMode.Katakana', INPUT_MODE_HALF_WIDTH_KATAKANA: 'InputMode.HalfWidthKatakana', INPUT_MODE_LATIN: 'InputMode.Latin', INPUT_MODE_WIDE_LATIN: 'InputMode.WideLatin' } self.__input_mode_activate(modes[Engine.__input_mode], IBus.PropState.UNCHECKED) def __cmd_on_off(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() if Engine.__input_mode == INPUT_MODE_LATIN: return self.__set_input_mode('InputMode.Hiragana') else: return self.__set_input_mode('InputMode.Latin') def __cmd_circle_input_mode(self, keyval, state): modes = { INPUT_MODE_HIRAGANA: 'InputMode.Katakana', INPUT_MODE_KATAKANA: 'InputMode.HalfWidthKatakana', INPUT_MODE_HALF_WIDTH_KATAKANA: 'InputMode.Latin', INPUT_MODE_LATIN: 'InputMode.WideLatin', INPUT_MODE_WIDE_LATIN: 'InputMode.Hiragana' } # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(modes[Engine.__input_mode]) def __cmd_circle_kana_mode(self, keyval, state): modes = { INPUT_MODE_HIRAGANA: 'InputMode.Katakana', INPUT_MODE_KATAKANA: 'InputMode.HalfWidthKatakana', INPUT_MODE_HALF_WIDTH_KATAKANA: 'InputMode.Hiragana', INPUT_MODE_LATIN: 'InputMode.Hiragana', INPUT_MODE_WIDE_LATIN: 'InputMode.Hiragana' } # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode(modes[Engine.__input_mode]) def __cmd_latin_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode('InputMode.Latin') def __cmd_wide_latin_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode('InputMode.WideLatin') def __cmd_hiragana_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode('InputMode.Hiragana') def __cmd_katakana_mode(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode('InputMode.Katakana') def __cmd_half_katakana(self, keyval, state): # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_input_mode() return self.__set_input_mode('InputMode.HalfWidthKatakana') # def __cmd_cancel_pseudo_ascii_mode_key(self, keyval, state): # pass def __unset_current_typing_mode(self): modes = { jastring.TYPING_MODE_ROMAJI: 'TypingMode.Romaji', jastring.TYPING_MODE_KANA: 'TypingMode.Kana', jastring.TYPING_MODE_THUMB_SHIFT: 'TypingMode.ThumbShift', } self.__typing_mode_activate(modes[Engine.__typing_mode], IBus.PropState.UNCHECKED) def __cmd_circle_typing_method(self, keyval, state): if not self._chk_mode('0'): return False modes = { jastring.TYPING_MODE_THUMB_SHIFT: 'TypingMode.Romaji', jastring.TYPING_MODE_KANA: 'TypingMode.ThumbShift', jastring.TYPING_MODE_ROMAJI: 'TypingMode.Kana', } # ibus 1.5 or later needs to send UNCHECKED self.__unset_current_typing_mode() self.__typing_mode_activate(modes[Engine.__typing_mode], IBus.PropState.CHECKED) return True def __cmd_circle_dict_method(self, keyval, state): if not self._chk_mode('0'): return False # ibus 1.5 or later needs to send UNCHECKED prop_name = self.__dict_mode_get_prop_name(Engine.__dict_mode) if prop_name != None: self.__dict_mode_activate(prop_name, IBus.PropState.UNCHECKED) single_files = self.__get_single_dict_files() new_mode = Engine.__dict_mode + 1 if new_mode > len(single_files): new_mode = 0 Engine.__dict_mode = new_mode prop_name = self.__dict_mode_get_prop_name(Engine.__dict_mode) if prop_name == None: return False self.__dict_mode_activate(prop_name, IBus.PropState.CHECKED) return True #edit_keys def __cmd_insert_space(self, keyval, state): if Engine.__input_mode == INPUT_MODE_LATIN: return False if (self.__prefs.get_value('common', 'half-width-space') or Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA): return self.__cmd_insert_half_space(keyval, state) else: return self.__cmd_insert_wide_space(keyval, state) def __cmd_insert_alternate_space(self, keyval, state): if Engine.__input_mode == INPUT_MODE_LATIN: return False if (self.__prefs.get_value('common', 'half-width-space') or Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA): return self.__cmd_insert_wide_space(keyval, state) else: return self.__cmd_insert_half_space(keyval, state) def __cmd_insert_half_space(self, keyval, state): if not self._chk_mode('0'): return False if not self.__preedit_ja_string.is_empty(): return False self.__commit_string(chr(IBus.KEY_space)) return True def __cmd_insert_wide_space(self, keyval, state): if not self._chk_mode('0'): return False if not self.__preedit_ja_string.is_empty(): return False char = chr(IBus.KEY_space) wide_char = symbol_rule.get(char, None) if wide_char == None: wide_char = unichar_half_to_full(char) self.__commit_string(wide_char) return True def __cmd_backspace(self, keyval, state): if not self._chk_mode('12345'): return False return self.__on_key_back_space() def __cmd_delete(self, keyval, state): if not self._chk_mode('12345'): return False return self.__on_key_delete() def __cmd_commit(self, keyval, state): if not self._chk_mode('12345'): return False return self.__on_key_return() def __cmd_convert(self, keyval, state): if not self._chk_mode('14'): return False self.__begin_anthy_convert() self.__invalidate() return True def __cmd_predict(self, keyval, state): if not self._chk_mode('14'): return False text, cursor = self.__preedit_ja_string.get_hiragana(True) self.__context.set_prediction_string(text) nr_predictions = self.__context.get_nr_predictions() # for i in range(nr_predictions): # print self.__context.get_prediction(i) buf = self.__context.get_prediction(0) if not buf: return False text = buf self.__segments.append((0, text)) self.__convert_mode = CONV_MODE_PREDICTION self.__cursor_pos = 0 self.__fill_lookup_table() if self.__osk_mode: self.__lookup_table_visible = True else: self.__lookup_table_visible = False self.__invalidate() return True def __cmd_cancel(self, keyval, state): return self.__cmd_cancel_all(keyval, state) def __cmd_cancel_all(self, keyval, state): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_OFF: return self.__on_key_escape() else: self.__end_convert() self.__invalidate() return True def __cmd_escape_to_latin(self, keyval, state): """ Vi-cooperative variant of cancel_all. When Vi users press Escape, they expect to return to Normal mode where an IME would not make sense. This command automatically switches back to Latin when sending Escape. When converting, Escape will cancel the conversion instead. """ if self._chk_mode('0'): if Engine.__input_mode != INPUT_MODE_LATIN: self.__cmd_latin_mode(keyval, state) return False else: return self.__cmd_cancel_all(keyval, state) def __cmd_reconvert(self, keyval, state): if not self.__preedit_ja_string.is_empty(): # if user has inputed some chars return False # Move importing Gtk into Engine from the header # because ibus-engine-anthy --xml does not requre to open X. try: from gi.repository import Gtk clipboard_get = Gtk.Clipboard.get except ImportError: clipboard_get = lambda a : None except RuntimeError: # Do we support the engine without display? printerr("Gtk couldn't be initialized") printerr('Could not open display') clipboard_get = lambda a : None # Use Gtk.Clipboard.request_text() instead of # Gtk.Clipboard.wait_for_text() because DBus is timed out. clipboard = clipboard_get ('PRIMARY') if clipboard: clipboard.request_text (self.__get_clipboard, CLIPBOARD_RECONVERT) return True def __update_reconvert(self, clipboard_text): if clipboard_text == None: return False self.__convert_chars = clipboard_text for i in range(0, len(self.__convert_chars)): keyval = self.__convert_chars[i] self.__preedit_ja_string.insert(chr(ord(keyval))) self.__context.set_string(self.__convert_chars) nr_segments = self.__context.get_nr_segments() for i in range(0, nr_segments): buf = self.__context.get_segment(i, 0) text = buf self.__segments.append((0, text)) self.__convert_mode = CONV_MODE_ANTHY self.__cursor_pos = 0 self.__fill_lookup_table() if self.__osk_mode: self.__lookup_table_visible = True else: self.__lookup_table_visible = False self.__invalidate() return True # def __cmd_do_nothing(self, keyval, state): # return True #caret_keys def __move_caret(self, i): if not self._chk_mode('1'): return False if self.__convert_mode == CONV_MODE_OFF: self.__preedit_ja_string.move_cursor( -len(self.__preedit_ja_string.get_latin()[0]) if i == 0 else i if i in [-1, 1] else len(self.__preedit_ja_string.get_latin()[0])) self.__invalidate() return True return False def __cmd_move_caret_first(self, keyval, state): return self.__move_caret(0) def __cmd_move_caret_last(self, keyval, state): return self.__move_caret(2) def __cmd_move_caret_forward(self, keyval, state): return self.__move_caret(1) def __cmd_move_caret_backward(self, keyval, state): return self.__move_caret(-1) #segments_keys def __select_segment(self, i): if not self._chk_mode('25'): return False pos = 0 if i == 0 else \ self.__cursor_pos + i if i in [-1, 1] else \ len(self.__segments) - 1 if 0 <= pos < len(self.__segments) and pos != self.__cursor_pos: self.__cursor_pos = pos self.__lookup_table_visible = False self.__fill_lookup_table() self.__invalidate() return True def __cmd_select_first_segment(self, keyval, state): return self.__select_segment(0) def __cmd_select_last_segment(self, keyval, state): return self.__select_segment(2) def __cmd_select_next_segment(self, keyval, state): return self.__select_segment(1) def __cmd_select_prev_segment(self, keyval, state): return self.__select_segment(-1) def __cmd_shrink_segment(self, keyval, state): if not self._chk_mode('25'): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__shrink_segment(-1) return True def __cmd_expand_segment(self, keyval, state): if not self._chk_mode('25'): return False if self.__convert_mode == CONV_MODE_ANTHY: self.__shrink_segment(1) return True def __move_cursor_char_length(self, length): if Engine.__input_mode == INPUT_MODE_HIRAGANA: self.__preedit_ja_string.move_cursor_hiragana_length(length) elif Engine.__input_mode == INPUT_MODE_KATAKANA: self.__preedit_ja_string.move_cursor_katakana_length(length) elif Engine.__input_mode == INPUT_MODE_HALF_WIDTH_KATAKANA: self.__preedit_ja_string.move_cursor_half_with_katakana_length(length) else: self.__preedit_ja_string.move_cursor(length) def __commit_nth_segment(self, commit_index, keyval, state): if commit_index >= len(self.__segments): return False if self.__convert_mode == CONV_MODE_ANTHY: for i in range(0, commit_index + 1): (seg_index, text) = self.__segments[i] self.commit_text(IBus.Text.new_from_string(text)) text, cursor = self.__get_preedit() commit_length = 0 for i in range(0, commit_index + 1): buf = self.__context.get_segment(i, NTH_UNCONVERTED_CANDIDATE) commit_length += len(buf) self.__move_cursor_char_length(commit_length - cursor) for i in range(0, commit_length): self.__preedit_ja_string.remove_before() self.__move_cursor_char_length(cursor - commit_length) del self.__segments[0:commit_index + 1] if len(self.__segments) == 0: self.__reset() else: if self.__cursor_pos > commit_index: self.__cursor_pos -= (commit_index + 1) else: self.__cursor_pos = 0 text, cursor = self.__get_preedit() self.__convert_chars = text self.__context.set_string(text) self.__lookup_table.clear() self.__lookup_table.set_cursor_visible(False) self.__lookup_table_visible = False self.update_aux_string('', IBus.AttrList(), self.__lookup_table_visible) self.__fill_lookup_table() self.__invalidate() self.__update_input_chars() return True def __cmd_commit_first_segment(self, keyval, state): return self.__commit_nth_segment(0, keyval, state) def __cmd_commit_selected_segment(self, keyval, state): return self.__commit_nth_segment(self.__cursor_pos, keyval, state) #candidates_keys def __on_candidate_index_in_page(self, index): if not self._chk_mode('5'): return False if index >= self.__lookup_table.get_page_size(): return False cursor_pos = self.__lookup_table.get_cursor_pos() cursor_in_page = self.__lookup_table.get_cursor_in_page() real_index = cursor_pos - cursor_in_page + index if real_index >= self.__lookup_table.get_number_of_candidates(): return False self.__lookup_table.set_cursor_pos(real_index) index = self.__lookup_table.get_cursor_pos() candidate = self.__lookup_table.get_candidate(index).get_text() self.__segments[self.__cursor_pos] = index, candidate if not self.__osk_mode: self.__lookup_table_visible = False self.__on_key_right() self.__invalidate() return True def __cmd_select_first_candidate(self, keyval, state): return self.__on_candidate_index_in_page(0) def __cmd_select_last_candidate(self, keyval, state): return self.__on_candidate_index_in_page( self.__lookup_table.get_page_size() - 1) def __cmd_select_next_candidate(self, keyval, state): if not self._chk_mode('235'): return False return self.__on_key_down() def __cmd_select_prev_candidate(self, keyval, state): if not self._chk_mode('235'): return False return self.__on_key_up() def __cmd_candidates_page_up(self, keyval, state): if not self._chk_mode('5'): return False return self.__on_key_page_up() def __cmd_candidates_page_down(self, keyval, state): if not self._chk_mode('5'): return False return self.__on_key_page_down() #direct_select_keys def __select_keyval(self, keyval): if not self._chk_mode('5'): return False return self.__on_key_number(keyval) def __cmd_select_candidates_1(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_2(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_3(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_4(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_5(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_6(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_7(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_8(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_9(self, keyval, state): return self.__select_keyval(keyval) def __cmd_select_candidates_0(self, keyval, state): return self.__select_keyval(keyval) #convert_keys def __cmd_convert_to_char_type_forward(self, keyval, state): if self.__convert_mode == CONV_MODE_ANTHY: n = self.__segments[self.__cursor_pos][0] if n == NTH_HIRAGANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_KATAKANA_CANDIDATE) elif n == NTH_KATAKANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) elif n == NTH_HALFKANA_CANDIDATE: return self.__convert_segment_to_latin(-100) elif n == -100: return self.__convert_segment_to_latin(-101) else: return self.__convert_segment_to_kana(NTH_HIRAGANA_CANDIDATE) if self.__convert_mode == CONV_MODE_KATAKANA: return self.__cmd_convert_to_half_katakana(keyval, state) elif self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: return self.__cmd_convert_to_latin(keyval, state) elif CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: return self.__cmd_convert_to_wide_latin(keyval, state) elif (CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3): return self.__cmd_convert_to_hiragana(keyval, state) else: return self.__cmd_convert_to_katakana(keyval, state) def __cmd_convert_to_char_type_backward(self, keyval, state): if self.__convert_mode == CONV_MODE_ANTHY: n = self.__segments[self.__cursor_pos][0] if n == NTH_KATAKANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_HIRAGANA_CANDIDATE) elif n == NTH_HALFKANA_CANDIDATE: return self.__convert_segment_to_kana(NTH_KATAKANA_CANDIDATE) elif n == -100: return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) elif n == -101: return self.__convert_segment_to_latin(-100) else: return self.__convert_segment_to_latin(-101) if self.__convert_mode == CONV_MODE_KATAKANA: return self.__cmd_convert_to_hiragana(keyval, state) elif self.__convert_mode == CONV_MODE_HALF_WIDTH_KATAKANA: return self.__cmd_convert_to_katakana(keyval, state) elif CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: return self.__cmd_convert_to_half_katakana(keyval, state) elif (CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3): return self.__cmd_convert_to_latin(keyval, state) else: return self.__cmd_convert_to_wide_latin(keyval, state) def __convert_segment_to_kana(self, n): if self.__convert_mode == CONV_MODE_ANTHY and -4 <= n <= -2: buf = self.__context.get_segment(self.__cursor_pos, n) self.__segments[self.__cursor_pos] = n, buf self.__lookup_table_visible = False self.__invalidate() return True return False def __convert_to_hiragana_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_HIRAGANA_CANDIDATE) return self.__on_key_conv(0) def __convert_to_katakana_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_KATAKANA_CANDIDATE) return self.__on_key_conv(1) def __convert_to_half_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: i, s = self.__segments[self.__cursor_pos] if i == -101: return self.__convert_segment_to_latin(-100) elif i == -100: return self.__convert_segment_to_latin(-100) if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) elif CONV_MODE_WIDE_LATIN_0 <= self.__convert_mode <= CONV_MODE_WIDE_LATIN_3: return self.__on_key_conv(4) elif CONV_MODE_LATIN_0 <= self.__convert_mode <= CONV_MODE_LATIN_3: return self.__on_key_conv(4) return self.__on_key_conv(2) def __convert_to_half_katakana_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_kana(NTH_HALFKANA_CANDIDATE) return self.__on_key_conv(2) def __convert_segment_to_latin(self, n): if self.__convert_mode == CONV_MODE_ANTHY and n in [-100, -101]: start = 0 for i in range(self.__cursor_pos): start += len(self.__context.get_segment(i, NTH_UNCONVERTED_CANDIDATE)) end = start + len(self.__context.get_segment(self.__cursor_pos, NTH_UNCONVERTED_CANDIDATE)) i, s = self.__segments[self.__cursor_pos] s2 = self.__preedit_ja_string.get_raw(start, end) if n == -101: s2 = ''.join([unichar_half_to_full(c) for c in s2]) if i == n: if s == s2.lower(): s2 = s2.upper() elif s == s2.upper(): s2 = s2.capitalize() elif s == s2 or s == s2.capitalize(): s2 = s2.lower() self.__segments[self.__cursor_pos] = n, s2 self.__lookup_table_visible = False self.__invalidate() return True return False def __convert_to_wide_latin_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_latin(-101) return self.__on_key_conv(3) def __convert_to_latin_internal(self, keyval, state, mode): if not self._chk_mode('12345'): return False if self.__convert_mode == CONV_MODE_ANTHY: if mode == 1: self.__cmd_move_caret_first(keyval, state) self.__shrink_segment_end() return self.__convert_segment_to_latin(-100) return self.__on_key_conv(4) def __cmd_convert_to_hiragana(self, keyval, state): return self.__convert_to_hiragana_internal(keyval, state, 0) def __cmd_convert_to_hiragana_all(self, keyval, state): return self.__convert_to_hiragana_internal(keyval, state, 1) def __cmd_convert_to_katakana(self, keyval, state): return self.__convert_to_katakana_internal(keyval, state, 0) def __cmd_convert_to_katakana_all(self, keyval, state): return self.__convert_to_katakana_internal(keyval, state, 1) def __cmd_convert_to_half(self, keyval, state): return self.__convert_to_half_internal(keyval, state, 0) def __cmd_convert_to_half_all(self, keyval, state): return self.__convert_to_half_internal(keyval, state, 1) def __cmd_convert_to_half_katakana(self, keyval, state): return self.__convert_to_half_katakana_internal(keyval, state, 0) def __cmd_convert_to_half_katakana_all(self, keyval, state): return self.__convert_to_half_katakana_internal(keyval, state, 1) def __cmd_convert_to_wide_latin(self, keyval, state): return self.__convert_to_wide_latin_internal(keyval, state, 0) def __cmd_convert_to_wide_latin_all(self, keyval, state): return self.__convert_to_wide_latin_internal(keyval, state, 1) def __cmd_convert_to_latin(self, keyval, state): return self.__convert_to_latin_internal(keyval, state, 0) def __cmd_convert_to_latin_all(self, keyval, state): return self.__convert_to_latin_internal(keyval, state, 1) #dictonary_keys def __cmd_dict_admin(self, keyval, state): if not self._chk_mode('0'): return False self.__start_dict_admin() return True def __cmd_add_word(self, keyval, state): if not self._chk_mode('0'): return False self.__start_add_word() return True def __cmd_start_setup(self, keyval, state): if not self._chk_mode('0'): return False self.__start_setup() return True def __start_dict_admin(self): command = self.__prefs.get_value('common', 'dict-admin-command') os.spawnl(os.P_NOWAIT, *command) def __start_add_word(self): command = self.__prefs.get_value('common', 'add-word-command') os.spawnl(os.P_NOWAIT, *command) def __start_setup(self): if Engine.__setup_pid != 0: pid, state = os.waitpid(Engine.__setup_pid, os.P_NOWAIT) if pid != Engine.__setup_pid: return Engine.__setup_pid = 0 setup_cmd = path.join(config.LIBEXECDIR, 'ibus-setup-anthy') Engine.__setup_pid = os.spawnl(os.P_NOWAIT, setup_cmd, 'ibus-setup-anthy') def __cmd_hiragana_for_latin_with_shift(self, keyval, state): self.__preedit_ja_string.set_hiragana_katakana(True) ibus-anthy-1.5.17/engine/python3/factory.py000066400000000000000000000053611475510605700206010ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import os import sys from gi import require_version as gi_require_version gi_require_version('IBus', '1.0') from gi.repository import IBus import _config as config import engine class EngineFactory(IBus.Factory): FACTORY_PATH = '/com/redhat/IBus/engines/Anthy/Factory' ENGINE_PATH = '/com/redhat/IBus/engines/Anthy/Engine' NAME = 'Anthy' LANG = 'ja' ICON = config.PKGDATADIR + '/icons/ibus-anthy.png' AUTHORS = 'Huang Peng ' CREDITS = 'GPLv2' def __init__(self, bus): self.__bus = bus engine.Engine.CONFIG_RELOADED() super(EngineFactory, self).__init__(object_path=IBus.PATH_FACTORY, connection=bus.get_connection()) self.__id = 0 bus.get_connection().signal_subscribe('org.freedesktop.DBus', 'org.freedesktop.DBus', 'NameOwnerChanged', '/org/freedesktop/DBus', None, 0, self.__name_owner_changed_cb, bus) def do_create_engine(self, engine_name): if engine_name == 'anthy': self.__id += 1 return engine.Engine(self.__bus, '%s/%d' % (self.ENGINE_PATH, self.__id)) return super(EngineFactory, self).do_create_engine(engine_name) def __name_owner_changed_cb(self, connection, sender_name, object_path, interface_name, signal_name, parameters, user_data): if signal_name == 'NameOwnerChanged': engine.Engine.CONFIG_RELOADED() ibus-anthy-1.5.17/engine/python3/ibus-engine-anthy.in000066400000000000000000000021711475510605700224320ustar00rootroot00000000000000#!/bin/sh # # vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-2016 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. export IBUS_PREFIX=@prefix@ export IBUS_ANTHY_PKGDATADIR=@datarootdir@/@PACKAGE@ export LIBEXECDIR=@libexecdir@ exec @ENV_IBUS_ENGINE@ @PYTHON@ @datarootdir@/@PACKAGE@/engine/main.py "$@" ibus-anthy-1.5.17/engine/python3/jastring.py000066400000000000000000000272411475510605700207540ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import romaji import kana import thumb from segment import unichar_half_to_full HalfSymbolTable = {} for i in range(32, 127): if not chr(i).isalnum(): HalfSymbolTable[unichar_half_to_full(chr(i))] = chr(i) HalfNumberTable = {} for i in range(10): HalfNumberTable[unichar_half_to_full(str(i))] = str(i) PeriodTable = {'。': '.', '、': ',', '。': '.', '、': ','} SymbolTable = {} SymbolTable[0] = {'「': '「', '」': '」', '/': '/'} SymbolTable[1] = {'「': '「', '」': '」', '/': '・'} SymbolTable[2] = {'「': '[', '」': ']', '/': '/'} SymbolTable[3] = {'「': '[', '」': ']', '/': '・'} TYPING_MODE_ROMAJI, \ TYPING_MODE_KANA, \ TYPING_MODE_THUMB_SHIFT = list(range(3)) class JaString: _prefs = None _mode = TYPING_MODE_ROMAJI _shift = False _unshift = False def __init__(self, mode=TYPING_MODE_ROMAJI, latin_with_shift=True): self._init_mode(mode) if mode == TYPING_MODE_ROMAJI: romaji.RomajiSegment.SET_LATIN_WITH_SHIFT(latin_with_shift) @classmethod def _init_mode(cls, mode): cls._mode = mode cls._shift = False cls._unshift = False cls.__cursor = 0 cls.__segments = list() if mode == TYPING_MODE_ROMAJI: romaji.RomajiSegment.INIT_ROMAJI_TYPING_RULE(cls._prefs) elif mode == TYPING_MODE_KANA: kana.KanaSegment.INIT_KANA_TYPING_RULE(cls._prefs) elif mode == TYPING_MODE_THUMB_SHIFT: thumb.ThumbShiftSegment.INIT_THUMB_TYPING_RULE(cls._prefs) @classmethod def SET_PREFS(cls, prefs): cls._prefs = prefs @classmethod def RESET(cls, prefs, section, key, value): cls._prefs = prefs if section == 'kana-typing-rule': mode = TYPING_MODE_KANA kana.KanaSegment.RESET(prefs, section, key, value) cls._init_mode(mode) if section == 'common' and key == 'latin-with-shift': romaji.RomajiSegment.SET_LATIN_WITH_SHIFT(value) def set_shift(self, shift): self._shift = shift def set_hiragana_katakana(self, mode): if mode and self._mode == TYPING_MODE_ROMAJI: self._unshift = True def insert(self, c): segment_before = None segment_after = None new_segments = None if self.__cursor >= 1: segment_before = self.__segments[self.__cursor - 1] if self.__cursor < len(self.__segments): segment_after = self.__segments[self.__cursor] if segment_before and not segment_before.is_finished(): if type(segment_before) == romaji.RomajiSegment: new_segments = segment_before.append(c, self._shift, self._unshift) self._unshift = False else: new_segments = segment_before.append(c) elif segment_after and not segment_after.is_finished(): if type(segment_after) == romaji.RomajiSegment: new_segments = segment_after.prepend(c, self._shift, self._unshift) self._unshift = False else: new_segments = segment_after.prepend(c) else: if c != '\0' and c != '': if self._mode == TYPING_MODE_ROMAJI: new_segments = [romaji.RomajiSegment(c, '', self._shift, self._unshift)] self._unshift = False elif self._mode == TYPING_MODE_KANA: # kana mode doesn't have shift latin in MS. new_segments = [kana.KanaSegment(c)] elif self._mode == TYPING_MODE_THUMB_SHIFT: new_segments = [thumb.ThumbShiftSegment(c)] if new_segments: self.__segments[self.__cursor:self.__cursor] = new_segments self.__cursor += len(new_segments) def remove_before(self): index = self.__cursor - 1 if index >= 0: segment = self.__segments[index] segment.pop() if segment.is_empty(): del self.__segments[index] self.__cursor = index return True return False def remove_after(self): index = self.__cursor if index < len(self.__segments): segment = self.__segments[index] segment.pop() if segment.is_empty(): del self.__segments[index] return True return False def get_string(self, type): pass def move_cursor(self, delta): self.__cursor += delta if self.__cursor < 0: self.__cursor = 0 elif self.__cursor > len(self.__segments): self.__cursor = len(self.__segments) # hiragana segments are not char lengths. # e.g. 'ya' is 1 segment and 1 char and 'kya' is 1 segment and 2 chars. def move_cursor_hiragana_length(self, length): delta = length if delta < 0: if self.__cursor >= len(self.__segments): delta = delta + (self.__cursor - len(self.__segments) + 1) self.__cursor = len(self.__segments) - 1 while delta < 0: text = str(self.__segments[self.__cursor].to_hiragana()) if len(text) > -delta: break delta = delta + len(text) self.__cursor = self.__cursor - 1 else: if self.__cursor >= len(self.__segments): self.__cursor = len(self.__segments) return while delta > 0: text = str(self.__segments[self.__cursor].to_hiragana()) if len(text) > delta: break delta = delta - len(text) self.__cursor = self.__cursor + 1 def move_cursor_katakana_length(self, length): delta = length if delta < 0: if self.__cursor >= len(self.__segments): delta = delta + (self.__cursor - len(self.__segments) + 1) self.__cursor = len(self.__segments) - 1 while delta < 0: text = str(self.__segments[self.__cursor].to_katanaka()) if len(text) > -delta: break delta = delta + len(text) self.__cursor = self.__cursor - 1 else: if self.__cursor >= len(self.__segments): self.__cursor = len(self.__segments) return while delta > 0: text = str(self.__segments[self.__cursor].to_katanaka()) if len(text) > delta: break delta = delta - len(text) self.__cursor = self.__cursor + 1 def move_cursor_half_with_katakana_length(self, length): delta = length if delta < 0: if self.__cursor >= len(self.__segments): delta = delta + (self.__cursor - len(self.__segments) + 1) self.__cursor = len(self.__segments) - 1 while delta < 0: text = str(self.__segments[self.__cursor].to_half_width_katakana()) if len(text) > -delta: break delta = delta + len(text) self.__cursor = self.__cursor - 1 else: if self.__cursor >= len(self.__segments): self.__cursor = len(self.__segments) return while delta > 0: text = str(self.__segments[self.__cursor].to_half_width_katakana()) if len(text) > delta: break delta = delta - len(text) self.__cursor = self.__cursor + 1 def _chk_text(self, s): period = self._prefs.get_value('common', 'period-style') symbol = self._prefs.get_value('common', 'symbol-style') half_symbol = self._prefs.get_value('common', 'half-width-symbol') half_number = self._prefs.get_value('common', 'half-width-number') ret = '' for c in s: c = c if not period else PeriodTable.get(c, c) # thumb_left + '2' and '/' are different if self._mode != TYPING_MODE_THUMB_SHIFT: c = c if not symbol else SymbolTable[symbol].get(c, c) c = c if not half_symbol else HalfSymbolTable.get(c, c) c = c if not half_number else HalfNumberTable.get(c, c) ret += c return ret def get_hiragana(self, commit=False): conv = lambda s: s.to_hiragana() R = lambda s: s if not (commit and s[-1:] == 'n') else s[:-1] + 'ん' text_before = R(''.join(map(conv, self.__segments[:self.__cursor]))) text_after = R(''.join(map(conv, self.__segments[self.__cursor:]))) return self._chk_text(text_before + text_after), len(text_before) def get_katakana(self, commit=False): conv = lambda s: s.to_katakana() R = lambda s: s if not (commit and s[-1:] == 'n') else s[:-1] + 'ン' text_before = R(''.join(map(conv, self.__segments[:self.__cursor]))) text_after = R(''.join(map(conv, self.__segments[self.__cursor:]))) return self._chk_text(text_before + text_after), len(text_before) def get_half_width_katakana(self, commit=False): conv = lambda s: s.to_half_width_katakana() R = lambda s: s if not (commit and s[-1:] == 'n') else s[:-1] + 'ン' text_before = R(''.join(map(conv, self.__segments[:self.__cursor]))) text_after = R(''.join(map(conv, self.__segments[self.__cursor:]))) return self._chk_text(text_before + text_after), len(text_before) def get_latin(self): conv = lambda s: s.to_latin() text_before = ''.join(map(conv, self.__segments[:self.__cursor])) text_after = ''.join(map(conv, self.__segments[self.__cursor:])) return text_before + text_after, len(text_before) def get_wide_latin(self): conv = lambda s: s.to_wide_latin() text_before = ''.join(map(conv, self.__segments[:self.__cursor])) text_after = ''.join(map(conv, self.__segments[self.__cursor:])) return text_before + text_after, len(text_before) def is_empty(self): return all([s.is_empty() for s in self.__segments]) def get_raw(self, start, end): i = 0 r = '' for s in self.__segments: if i >= end: break elif start <= i: r += s.to_latin() i += len(s.to_hiragana()) return r ibus-anthy-1.5.17/engine/python3/kana.py000066400000000000000000000140101475510605700200330ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys from tables import * import segment _UNFINISHED_HIRAGANA = set('かきくけこさしすせそたちつてとはひふへほ') class KanaSegment(segment.Segment): _prefs = None _kana_typing_rule_method = None _kana_voiced_consonant_rule = None _kana_voiced_consonant_dict = None def __init__(self, enchars='', jachars=''): if not jachars: jachars = self.__get_kana_typing_rule(enchars, '') super(KanaSegment, self).__init__(enchars, jachars) @classmethod def INIT_KANA_TYPING_RULE(cls, prefs): cls._prefs = prefs if prefs == None: cls._kana_typing_rule_method = None return if cls._kana_typing_rule_method == None: cls._init_kana_typing_method() if cls._kana_voiced_consonant_rule == None and \ cls._kana_typing_rule_method != None: cls._init_kana_voiced_consonant_rule() @classmethod def _init_kana_typing_method(cls, method=None): prefs = cls._prefs if method == None: method = prefs.get_value('kana-typing-rule', 'method') if method == None: method = 'jp' cls._kana_typing_rule_method = method keymap = prefs.get_value('kana-typing-rule', 'list') if cls._kana_typing_rule_method not in keymap.keys(): cls._kana_typing_rule_method = None @classmethod def _init_kana_voiced_consonant_rule(cls): prefs = cls._prefs # Create kana_voiced_consonant_rule dynamically. # E.g. 't' + '@' on jp kbd becomes Hiragana GA # 't' + '[' on us kbd becomes Hiragana GA # If the customized table provides U+309b with other chars, # it needs to be detected dynamically. cls._kana_voiced_consonant_rule = {} method = cls._kana_typing_rule_method keymap = prefs.get_value('kana-typing-rule', 'list')[method] for gkey in keymap.keys(): value = keymap[gkey] key = prefs.typing_from_config_key(gkey) if key == '': continue if value == chr(0x309b): for no_voiced, voiced in \ list(kana_voiced_consonant_no_rule.items()): rule = no_voiced + key cls._kana_voiced_consonant_rule[rule] = voiced if value == chr(0x309c): for no_voiced, voiced in \ list(kana_semi_voiced_consonant_no_rule.items()): rule = no_voiced + key cls._kana_voiced_consonant_rule[rule] = voiced @classmethod def RESET(cls, prefs, section, key, value): cls._prefs = prefs if section == 'kana-typing-rule' and value != None: cls._kana_typing_rule_method = None cls._kana_voiced_consonant_rule = None cls.INIT_KANA_TYPING_RULE(prefs) def __get_kana_typing_rule(self, enchars, retval=None): prefs = self._prefs value = None method = self._kana_typing_rule_method if method != None: # Need to send Unicode to typing_to_config_key instead of UTF-8 # not to separate U+A5 gkey = prefs.typing_to_config_key(enchars) if gkey == '': return None enchars = gkey keymap = prefs.get_value('kana-typing-rule', 'list')[method] value = keymap.get(enchars) if value == '': value = None if value == None: value = retval else: value = kana_typing_rule_static.get(enchars, retval) return value def is_finished(self): return not (self._jachars in _UNFINISHED_HIRAGANA) def append(self, enchar): if enchar == '\0' or enchar == '': return [] if self._jachars: text = self._jachars + enchar if self._kana_voiced_consonant_rule != None: jachars = self._kana_voiced_consonant_rule.get(text, None) if jachars: self._enchars = self._enchars + enchar self._jachars = jachars return [] return [KanaSegment(enchar)] self._enchars = self._enchars + enchar self._jachars = self.__get_kana_typing_rule(self._enchars, '') return [] def prepend(self, enchar): if enchar == '\0' or enchar == '': return [] if self._enchars == '': self._enchars = enchar self._jachars = self.__get_kana_typing_rule(self._enchars, '') return [] return [KanaSegment(enchar)] def pop(self, index=-1): if index == -1: index = len(self._enchars) - 1 if index < 0 or index >= len(self._enchars): raise IndexError('Out of bound') if self.is_finished(): self._enchars = '' self._jachars = '' else: enchars = list(self._enchars) del enchars[index] self._enchars = ''.join(enchars) self._jachars = self.__get_kana_typing_rule(self._enchars, '') ibus-anthy-1.5.17/engine/python3/main.py000066400000000000000000000146621475510605700200620ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2025 Takao Fujiwara # Copyright (c) 2007-2016 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. import os from os import path import sys import getopt import locale import xml.dom.minidom from gi import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') from gi.repository import GLib # set_prgname before importing factory to show the name in warning # messages when import modules are failed. E.g. Gtk. GLib.set_prgname('ibus-engine-anthy') from gi.repository import IBus import _config as config # Need to call IBus.init() before IBus.EngineSimple() is loaded. # factory -> engine -> IBus.EngineSimple IBus.init() import factory class IMApp: def __init__(self, exec_by_ibus): command_line = config.LIBEXECDIR + '/ibus-engine-anthy --ibus' self.__component = IBus.Component(name='org.freedesktop.IBus.Anthy', description='Anthy Component', version='0.1.0', license='GPL', author='Peng Huang ', homepage='https://github.com/ibus/ibus/wiki', command_line=command_line, textdomain='ibus-anthy') engine = IBus.EngineDesc(name='anthy', longname='Anthy', description='Anthy Input Method', language='ja', license='GPL', author='Peng Huang ', icon='ibus-anthy', layout=config.LAYOUT, symbol=config.SYMBOL_CHAR, rank=99) self.__component.add_engine(engine) self.__mainloop = GLib.MainLoop() self.__bus = IBus.Bus() self.__bus.connect('disconnected', self.__bus_disconnected_cb) self.__factory = factory.EngineFactory(self.__bus) if exec_by_ibus: self.__bus.request_name('org.freedesktop.IBus.Anthy', 0) else: self.__bus.register_component(self.__component) def run(self): self.__mainloop.run() def __bus_disconnected_cb(self, bus): self.__mainloop.quit() def launch_engine(exec_by_ibus): IMApp(exec_by_ibus).run() def get_userhome(): if 'HOME' not in os.environ: import pwd userhome = pwd.getpwuid(os.getuid()).pw_dir else: userhome = os.environ['HOME'] userhome = userhome.rstrip('/') return userhome def resync_engine_file(): user_config = path.join(get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml') if not path.exists(user_config): return if not path.exists(system_config): os.unlink(user_config) return # path.getmtime depends on the build time rather than install time. def __get_engine_file_version(engine_file): version_str = '' dom = xml.dom.minidom.parse(engine_file) elements = dom.getElementsByTagName('version') nodes = [] if len(elements) > 0: nodes = elements[0].childNodes if len(nodes) > 0: version_str = nodes[0].data if version_str != '': version_str = version_str.strip() return version_str user_config_version = __get_engine_file_version(user_config) system_config_version = __get_engine_file_version(system_config) if system_config_version > user_config_version: import shutil shutil.copyfile(system_config, user_config) def print_xml(): user_config = os.path.join(get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = os.path.join(config.PKGDATADIR, 'engine', 'default.xml') xml = None for f in [user_config, system_config]: if os.path.exists(f): xml = f break if xml == None: print('Not exist: %s' % system_config, file=sys.stderr) return file = open(xml, 'r') print(file.read()) file.close() def print_help(out, v = 0): print('-i, --ibus executed by ibus.', file=out) print('-h, --help show this message.', file=out) print('-d, --daemonize daemonize ibus.', file=out) print('-x, --xml print engine xml.', file=out) sys.exit(v) def main(): try: locale.setlocale(locale.LC_ALL, '') except: pass exec_by_ibus = False daemonize = False xml = False shortopt = 'ihdx' longopt = ['ibus', 'help', 'daemonize', 'xml'] try: opts, args = getopt.getopt(sys.argv[1:], shortopt, longopt) except getopt.GetoptError as err: print_help(sys.stderr, 1) for o, a in opts: if o in ('-h', '--help'): print_help(sys.stdout) elif o in ('-d', '--daemonize'): daemonize = True elif o in ('-i', '--ibus'): exec_by_ibus = True elif o in ('-x', '--xml'): xml = True else: print('Unknown argument: %s' % o, file=sys.stderr) print_help(sys.stderr, 1) if daemonize: if os.fork(): sys.exit() if xml: resync_engine_file() print_xml() return launch_engine(exec_by_ibus) if __name__ == '__main__': main() ibus-anthy-1.5.17/engine/python3/romaji.py000066400000000000000000000217741475510605700204210ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys from tables import * import segment def romaji_correction_rule_get(k, d): return ('ん', k[1:2]) if k[0:1] == 'n' and not k[1:2] in "aiueony'" else d class RomajiSegment(segment.Segment): _prefs = None _romaji_typing_rule_method = None _latin_with_shift = True _shift_mode = False def __init__(self, enchars='', jachars='', shift=False, unshift=False): if self._latin_with_shift: # If Shift key is pressed, Latin mode. # If Hiragana_Katakana key is pressed, Hiragana mode. if shift: self._shift_mode = True if unshift: self._shift_mode = False enchars_orig = enchars # Even if the chars are capital with CapsLock, Hiragana # should be converted. E.g. 'SA' enchars = enchars.lower() if not jachars and not shift: jachars = self.__get_romaji_typing_rule(enchars, None) if jachars == None: jachars = symbol_rule.get(enchars, '') super(RomajiSegment, self).__init__(enchars_orig, jachars) @classmethod def INIT_ROMAJI_TYPING_RULE(cls, prefs): cls._prefs = prefs if prefs == None: cls._romaji_typing_rule_method = None return method = prefs.get_value('romaji-typing-rule', 'method') if method == None: method = 'default' cls._romaji_typing_rule_method = method keymap = prefs.get_value('romaji-typing-rule', 'list') if cls._romaji_typing_rule_method not in keymap.keys(): cls._romaji_typing_rule_method = None @classmethod def SET_LATIN_WITH_SHIFT(cls, latin_with_shift): # Do not use IBus.Config in every conversion for the performance. cls._latin_with_shift = latin_with_shift def __get_romaji_typing_rule(self, enchars, retval=None): prefs = self._prefs value = None method = self._romaji_typing_rule_method if method != None: # Need to send Unicode to typing_to_config_key instead of UTF-8 # not to separate U+A5 gkey = prefs.typing_to_config_key(enchars) if gkey == '': return None keymap = prefs.get_value('romaji-typing-rule', 'list')[method] value = keymap.get(gkey) if value == '': value = None if value == None: value = retval else: value = romaji_typing_rule_static.get(enchars, retval) return value def is_finished(self): return self._jachars != '' def append(self, enchar, shift=False, unshift=False): if self.is_finished(): if enchar == '' and enchar == '\0': return [] return [RomajiSegment(enchar)] text_orig = self._enchars + enchar text = text_orig.lower() if self._latin_with_shift: # If Shift key is pressed, Latin mode. # If Hiragana_Katakana key is pressed, Hiragana mode. if shift: self._shift_mode = True if unshift: self._shift_mode = False if self._shift_mode: self._enchars = text_orig return [] if shift: self._enchars = text_orig return [] jachars = self.__get_romaji_typing_rule(text, None) if jachars == None: jachars = symbol_rule.get(text, None) if jachars: self._enchars = text_orig self._jachars = jachars return [] jachars, c = romaji_double_consonat_typing_rule.get(text, (None, None)) if jachars: self._enchars = text_orig[0] self._jachars = jachars return [RomajiSegment(c)] # jachars, c = romaji_correction_rule.get(text, (None, None)) jachars, c = romaji_correction_rule_get(text, (None, None)) if jachars: self._enchars = text_orig[0] self._jachars = jachars return [RomajiSegment(c)] for i in range(-min(4, len(text)), 0): enchars = text[i:] jachars = self.__get_romaji_typing_rule(enchars, None) if jachars == None: jachars = symbol_rule.get(enchars, None) if jachars: jasegment = RomajiSegment(enchars, jachars) self._enchars = text_orig[:i] return [jasegment] jachars, c = romaji_double_consonat_typing_rule.get(enchars, (None, None)) if jachars: jasegment = RomajiSegment(enchars[:-len(c)], jachars) self._enchars = text_orig[:i] if c: return [jasegment, RomajiSegment(c)] return [jasegment] # jachars, c = romaji_correction_rule.get(enchars, (None, None)) jachars, c = romaji_correction_rule_get(enchars, (None, None)) if jachars: jasegment = RomajiSegment(enchars[:-len(c)], jachars) self._enchars = text_orig[:i] if c: return [jasegment, RomajiSegment(c)] return [jasegment] self._enchars = text_orig return [] def prepend(self, enchar, shift=False, unshift=False): if enchar == '' or enchar == '\0': return [] if self.is_finished(): return [RomajiSegment(enchar)] text_orig = enchar + self._enchars text = text_orig.lower() if self._latin_with_shift: if shift: self._shift_mode = True if unshift: self._shift_mode = False if self._shift_mode: self._enchars = text_orig return [] if shift: self._enchars = text_orig return [] jachars = self.__get_romaji_typing_rule(text, None) if jachars == None: jachars = symbol_rule.get(text, None) if jachars: self._enchars = text_orig self._jachars = jachars return [] jachars, c = romaji_double_consonat_typing_rule.get(text, (None, None)) if jachars: self._enchars = c return [RomajiSegment(text_orig[0], jachars)] # jachars, c = romaji_correction_rule.get(text, (None, None)) jachars, c = romaji_correction_rule_get(text, (None, None)) if jachars: self._enchars = c return [RomajiSegment(text_orig[0], jachars)] for i in range(min(4, len(text)), 0, -1): enchars = text[:i] jachars = self.__get_romaji_typing_rule(enchars, None) if jachars == None: jachars = symbol_rule.get(enchars, None) if jachars: jasegment = RomajiSegment(enchars, jachars) self._enchars = text_orig[i:] return [jasegment] jachars, c = romaji_double_consonat_typing_rule.get(enchars, (None, None)) if jachars: self._enchars = c + text_orig[i:] return [RomajiSegment(enchars[:-len(c)], jachars)] # jachars, c = romaji_correction_rule.get(enchars, (None, None)) jachars, c = romaji_correction_rule_get(enchars, (None, None)) if jachars: self._enchars = c + text_orig[i:] return [RomajiSegment(enchars[:-len(c)], jachars)] self._enchars = text_orig return [] def pop(self, index=-1): if index == -1: index = len(self._enchars) - 1 if index < 0 or index >= len(self._enchars): raise IndexError('Out of bound') if self.is_finished(): self._enchars = '' self._jachars = '' else: enchars = list(self._enchars) del enchars[index] self._enchars = ''.join(enchars) jachars = self.__get_romaji_typing_rule(self._enchars, None) if jachars == None: jachars = symbol_rule.get(self._enchars, '') self._jachars = jachars ibus-anthy-1.5.17/engine/python3/segment.py000066400000000000000000000055361475510605700206000ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2014 Takao Fujiwara # Copyright (c) 2007-2014 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. from tables import * _half_full_table = [ (0x0020, 0x3000, 1), (0x0021, 0xFF01, 0x5E), ] def _h_to_f(c): code = ord (c) for half, full, size in _half_full_table: if code >= half and code < half + size: return chr(full + code - half) return c def unichar_half_to_full(c): tdl = {'"': '\u201d', "'": '\u2019', '`': '\u2018'} return tdl[c] if c in tdl else _h_to_f(c) class Segment(object): def __init__(self, enchars='', jachars=''): self._enchars = enchars self._jachars = jachars def append(self, enchar): raise NotImplementedError('append() is not implemented') def prepend(self, enchar): raise NotImplementedError('prepend() is not implemented') def pop(self, index=-1): raise NotImplementedError('pop() is not implemented') def is_finished(self): raise NotImplementedError('is_finised() is not implemented') def set_enchars(self, enchars): self.enchars = enchars def get_enchars(self): return self._enchars def set_jachars(self, jachars): self._jachars = jachars def get_jachars(self): return self._jachars def to_hiragana(self): if self._jachars: return self._jachars return self._enchars def to_katakana(self): if self._jachars: return ''.join([hiragana_katakana_table.get(c, (c, c, c))[0] for c in self._jachars]) return self._enchars def to_half_width_katakana(self): if self._jachars: return ''.join([hiragana_katakana_table.get(c, (c, c, c))[1] for c in self._jachars]) return self._enchars def to_latin(self): return self._enchars def to_wide_latin(self): return ''.join(map(unichar_half_to_full, self._enchars)) def is_empty(self): if self._enchars or self._jachars: return False return True ibus-anthy-1.5.17/engine/python3/tables.py000066400000000000000000000367441475510605700204150ustar00rootroot00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2014 Takao Fujiwara # Copyright (c) 2007-2014 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. # string, result, cont romaji_typing_rule_static = { '-' : 'ー', 'a' : 'あ', 'i' : 'い', 'u' : 'う', 'e' : 'え', 'o' : 'お', 'xa' : 'ぁ', 'xi' : 'ぃ', 'xu' : 'ぅ', 'xe' : 'ぇ', 'xo' : 'ぉ', 'la' : 'ぁ', 'li' : 'ぃ', 'lu' : 'ぅ', 'le' : 'ぇ', 'lo' : 'ぉ', 'wha' : 'うぁ', 'whi' : 'うぃ', 'whe' : 'うぇ', 'who' : 'うぉ', 'va' : 'ヴぁ', 'vi' : 'ヴぃ', 'vu' : 'ヴ', 've' : 'ヴぇ', 'vo' : 'ヴぉ', 'ka' : 'か', 'ki' : 'き', 'ku' : 'く', 'ke' : 'け', 'ko' : 'こ', 'lka' : 'ヵ', 'lke' : 'ヶ', # u'xka' : u'ゕ', 'xka' : 'ヵ', # u'xke' : u'ゖ', 'xke' : 'ヶ', 'ga' : 'が', 'gi' : 'ぎ', 'gu' : 'ぐ', 'ge' : 'げ', 'go' : 'ご', 'kya' : 'きゃ', 'kyi' : 'きぃ', 'kyu' : 'きゅ', 'kye' : 'きぇ', 'kyo' : 'きょ', 'kwa' : 'くぁ', 'gya' : 'ぎゃ', 'gyi' : 'ぎぃ', 'gyu' : 'ぎゅ', 'gye' : 'ぎぇ', 'gyo' : 'ぎょ', 'gwa' : 'ぐぁ', 'sa' : 'さ', 'si' : 'し', 'su' : 'す', 'se' : 'せ', 'so' : 'そ', 'za' : 'ざ', 'zi' : 'じ', 'zu' : 'ず', 'ze' : 'ぜ', 'zo' : 'ぞ', 'sya' : 'しゃ', 'syi' : 'しぃ', 'syu' : 'しゅ', 'sye' : 'しぇ', 'syo' : 'しょ', 'sha' : 'しゃ', 'shi' : 'し', 'shu' : 'しゅ', 'she' : 'しぇ', 'sho' : 'しょ', 'zya' : 'じゃ', 'zyi' : 'じぃ', 'zyu' : 'じゅ', 'zye' : 'じぇ', 'zyo' : 'じょ', 'ja' : 'じゃ', 'jya' : 'じゃ', 'ji' : 'じ', 'jyi' : 'じぃ', 'ju' : 'じゅ', 'jyu' : 'じゅ', 'je' : 'じぇ', 'jye' : 'じぇ', 'jo' : 'じょ', 'jyo' : 'じょ', 'ta' : 'た', 'ti' : 'ち', 'tu' : 'つ', 'tsu' : 'つ', 'te' : 'て', 'to' : 'と', 'da' : 'だ', 'di' : 'ぢ', 'du' : 'づ', 'de' : 'で', 'do' : 'ど', 'xtu' : 'っ', 'xtsu' : 'っ', 'ltu' : 'っ', 'ltsu' : 'っ', 'tya' : 'ちゃ', 'tyi' : 'ちぃ', 'tyu' : 'ちゅ', 'tye' : 'ちぇ', 'tyo' : 'ちょ', 'cya' : 'ちゃ', 'cyi' : 'ちぃ', 'cyu' : 'ちゅ', 'cye' : 'ちぇ', 'cyo' : 'ちょ', 'cha' : 'ちゃ', 'chi' : 'ち', 'chu' : 'ちゅ', 'che' : 'ちぇ', 'cho' : 'ちょ', 'dya' : 'ぢゃ', 'dyi' : 'ぢぃ', 'dyu' : 'ぢゅ', 'dye' : 'ぢぇ', 'dyo' : 'ぢょ', 'tsa' : 'つぁ', 'tsi' : 'つぃ', 'tse' : 'つぇ', 'tso' : 'つぉ', 'tha' : 'てゃ', 'thi' : 'てぃ', 'thu' : 'てゅ', 'the' : 'てぇ', 'tho' : 'てょ', 'twu' : 'とぅ', 'dha' : 'でゃ', 'dhi' : 'でぃ', 'dhu' : 'でゅ', 'dhe' : 'でぇ', 'dho' : 'でょ', 'dwu' : 'どぅ', 'na' : 'な', 'ni' : 'に', 'nu' : 'ぬ', 'ne' : 'ね', 'no' : 'の', 'nya' : 'にゃ', 'nyi' : 'にぃ', 'nyu' : 'にゅ', 'nye' : 'にぇ', 'nyo' : 'にょ', 'ha' : 'は', 'hi' : 'ひ', 'hu' : 'ふ', 'he' : 'へ', 'ho' : 'ほ', 'ba' : 'ば', 'bi' : 'び', 'bu' : 'ぶ', 'be' : 'べ', 'bo' : 'ぼ', 'pa' : 'ぱ', 'pi' : 'ぴ', 'pu' : 'ぷ', 'pe' : 'ぺ', 'po' : 'ぽ', 'hya' : 'ひゃ', 'hyi' : 'ひぃ', 'hyu' : 'ひゅ', 'hye' : 'ひぇ', 'hyo' : 'ひょ', 'bya' : 'びゃ', 'byi' : 'びぃ', 'byu' : 'びゅ', 'bye' : 'びぇ', 'byo' : 'びょ', 'pya' : 'ぴゃ', 'pyi' : 'ぴぃ', 'pyu' : 'ぴゅ', 'pye' : 'ぴぇ', 'pyo' : 'ぴょ', 'fa' : 'ふぁ', 'fi' : 'ふぃ', 'fu' : 'ふ', 'fe' : 'ふぇ', 'fo' : 'ふぉ', 'fya' : 'ふゃ', 'fyi' : 'ふぃ', 'fyu' : 'ふゅ', 'fye' : 'ふぇ', 'fyo' : 'ふょ', 'ma' : 'ま', 'mi' : 'み', 'mu' : 'む', 'me' : 'め', 'mo' : 'も', 'mya' : 'みゃ', 'myi' : 'みぃ', 'myu' : 'みゅ', 'mye' : 'みぇ', 'myo' : 'みょ', 'ya' : 'や', 'yi' : 'い', 'yu' : 'ゆ', 'ye' : 'いぇ', 'yo' : 'よ', 'lya' : 'ゃ', 'lyi' : 'ぃ', 'lyu' : 'ゅ', 'lye' : 'ぇ', 'lyo' : 'ょ', 'xya' : 'ゃ', 'xyi' : 'ぃ', 'xyu' : 'ゅ', 'xye' : 'ぇ', 'xyo' : 'ょ', 'ra' : 'ら', 'ri' : 'り', 'ru' : 'る', 're' : 'れ', 'ro' : 'ろ', 'rya' : 'りゃ', 'ryi' : 'りぃ', 'ryu' : 'りゅ', 'rye' : 'りぇ', 'ryo' : 'りょ', 'wa' : 'わ', 'wi' : 'うぃ', 'wu' : 'う', 'we' : 'うぇ', 'wo' : 'を', 'lwa' : 'ゎ', 'xwa' : 'ゎ', 'n\'' : 'ん', 'nn' : 'ん', 'wyi' : 'ゐ', 'wye' : 'ゑ', } symbol_rule = { # symbols ' ' : ' ', ',' : '、', '.' : '。', '!' : '!', '"' : '\u201d', '#' : '#', '$' : '$', '%' : '%', '&' : '&', '\'' : '\u2019', '(' : '(', ')' : ')', '~' : '\uff5e', '-' : 'ー', '=' : '=', '^' : '^', '\\' : '\', '|' : '|', '`' : '\u2018', '@' : '@', '{' : '{', '[' : '「', '+' : '+', ';' : ';', '*' : '*', ':' : ':', '}' : '}', ']' : '」', '<' : '<', '>' : '>', '?' : '?', '/' : '/', '_' : '_', '¥' : '¥', # numbers '0': '0', '1': '1', '2': '2', '3': '3', '4': '4', '5': '5', '6': '6', '7': '7', '8': '8', '9': '9', } # this is only used with romaji_typing_rule romaji_double_consonat_typing_rule = { # double consonant rule 'bb' : ('っ', 'b'), 'cc' : ('っ', 'c'), 'dd' : ('っ', 'd'), 'ff' : ('っ', 'f'), 'gg' : ('っ', 'g'), 'hh' : ('っ', 'h'), 'jj' : ('っ', 'j'), 'kk' : ('っ', 'k'), 'mm' : ('っ', 'm'), 'pp' : ('っ', 'p'), 'rr' : ('っ', 'r'), 'ss' : ('っ', 's'), 'tt' : ('っ', 't'), 'vv' : ('っ', 'v'), 'ww' : ('っ', 'w'), 'xx' : ('っ', 'x'), 'yy' : ('っ', 'y'), 'zz' : ('っ', 'z'), } # this is only used with romaji_typing_rule romaji_correction_rule = { 'nb' : ('ん', 'b'), 'nc' : ('ん', 'c'), 'nd' : ('ん', 'd'), 'nf' : ('ん', 'f'), 'ng' : ('ん', 'g'), 'nh' : ('ん', 'h'), 'nj' : ('ん', 'j'), 'nk' : ('ん', 'k'), 'nl' : ('ん', 'l'), 'nm' : ('ん', 'm'), 'np' : ('ん', 'p'), 'nr' : ('ん', 'r'), 'ns' : ('ん', 's'), 'nt' : ('ん', 't'), 'nv' : ('ん', 'v'), 'nw' : ('ん', 'w'), 'nx' : ('ん', 'x'), 'nz' : ('ん', 'z'), 'n\0' : ('ん', ''), 'n,' : ('ん', ','), 'n.' : ('ん', '.'), } # EUC-JP and SJIS do not have the chars romaji_utf8_rule = { 'う゛' : ['ゔ'], } # Hiragana normalization is needed for the personal dict. romaji_normalize_rule = { 'ヴ' : ['う゛'], } # a port of 101kana.sty from scim-anthy kana_typing_rule_static = { # no modifiers keys '1' : 'ぬ', '2' : 'ふ', '3' : 'あ', '4' : 'う', '5' : 'え', '6' : 'お', '7' : 'や', '8' : 'ゆ', '9' : 'よ', '0' : 'わ', '-' : 'ほ', '^' : 'へ', 'q' : 'た', 'w' : 'て', 'e' : 'い', 'r' : 'す', 't' : 'か', 'y' : 'ん', 'u' : 'な', 'i' : 'に', 'o' : 'ら', 'p' : 'せ', '@' : '゛', '[' : '゜', 'a' : 'ち', 's' : 'と', 'd' : 'し', 'f' : 'は', 'g' : 'き', 'h' : 'く', 'j' : 'ま', 'k' : 'の', 'l' : 'り', ';' : 'れ', ':' : 'け', ']' : 'む', 'z' : 'つ', 'x' : 'さ', 'c' : 'そ', 'v' : 'ひ', 'b' : 'こ', 'n' : 'み', 'm' : 'も', ',' : 'ね', '.' : 'る', '/' : 'め', # u'\\' : u'ー', '\\' : 'ろ', # shift modifiered keys '!' : 'ぬ', '"' : 'ふ', '#' : 'ぁ', '$' : 'ぅ', '%' : 'ぇ', '&' : 'ぉ', '\'' : 'ゃ', '(' : 'ゅ', ')' : 'ょ', '~' : 'を', '=' : 'ほ', '|' : 'ー', 'Q' : 'た', 'W' : 'て', 'E' : 'ぃ', 'R' : 'す', 'T' : 'ヵ', 'Y' : 'ん', 'U' : 'な', 'I' : 'に', 'O' : 'ら', 'P' : 'せ', '`' : '゛', '{' : '「', 'A' : 'ち', 'S' : 'と', 'D' : 'し', 'F' : 'ゎ', 'G' : 'き', 'H' : 'く', 'J' : 'ま', 'K' : 'の', 'L' : 'り', '+' : 'れ', '*' : 'ヶ', '}' : '」', 'Z' : 'っ', 'X' : 'さ', 'C' : 'そ', 'V' : 'ゐ', 'B' : 'こ', 'M' : 'も', 'N' : 'み', '<' : '、', '>' : '。', '?' : '・', '_' : 'ろ', '¥' : 'ー', } kana_voiced_consonant_no_rule = { 'か' : 'が', 'き' : 'ぎ', 'く' : 'ぐ', 'け' : 'げ', 'こ' : 'ご', 'さ' : 'ざ', 'し' : 'じ', 'す' : 'ず', 'せ' : 'ぜ', 'そ' : 'ぞ', 'た' : 'だ', 'ち' : 'ぢ', 'つ' : 'づ', 'て' : 'で', 'と' : 'ど', 'は' : 'ば', 'ひ' : 'び', 'ふ' : 'ぶ', 'へ' : 'べ', 'ほ' : 'ぼ', } kana_semi_voiced_consonant_no_rule = { 'は' : 'ぱ', 'ひ' : 'ぴ', 'ふ' : 'ぷ', 'へ' : 'ぺ', 'ほ' : 'ぽ', } # Create the table dynamically with kana_voiced_consonant_no_rule # #kana_voiced_consonant_rule = { # u'か@' : u'が', # u'き@' : u'ぎ', # u'く@' : u'ぐ', # u'け@' : u'げ', # u'こ@' : u'ご', # u'さ@' : u'ざ', # u'し@' : u'じ', # u'す@' : u'ず', # u'せ@' : u'ぜ', # u'そ@' : u'ぞ', # u'た@' : u'だ', # u'ち@' : u'ぢ', # u'つ@' : u'づ', # u'て@' : u'で', # u'と@' : u'ど', # u'は@' : u'ば', # u'ひ@' : u'び', # u'ふ@' : u'ぶ', # u'へ@' : u'べ', # u'ほ@' : u'ぼ', # u'か`' : u'が', # u'き`' : u'ぎ', # u'く`' : u'ぐ', # u'け`' : u'げ', # u'こ`' : u'ご', # u'さ`' : u'ざ', # u'し`' : u'じ', # u'す`' : u'ず', # u'せ`' : u'ぜ', # u'そ`' : u'ぞ', # u'た`' : u'だ', # u'ち`' : u'ぢ', # u'つ`' : u'づ', # u'て`' : u'で', # u'と`' : u'ど', # u'は`' : u'ば', # u'ひ`' : u'び', # u'ふ`' : u'ぶ', # u'へ`' : u'べ', # u'ほ`' : u'ぼ', # u'は[' : u'ぱ', # u'ひ[' : u'ぴ', # u'ふ[' : u'ぷ', # u'へ[' : u'ぺ', # u'ほ[' : u'ぽ', #} # #kana_voiced_consonant_us_rule = { # u'か[' : u'が', # u'き[' : u'ぎ', # u'く[' : u'ぐ', # u'け[' : u'げ', # u'こ[' : u'ご', # u'さ[' : u'ざ', # u'し[' : u'じ', # u'す[' : u'ず', # u'せ[' : u'ぜ', # u'そ[' : u'ぞ', # u'た[' : u'だ', # u'ち[' : u'ぢ', # u'つ[' : u'づ', # u'て[' : u'で', # u'と[' : u'ど', # u'は[' : u'ば', # u'ひ[' : u'び', # u'ふ[' : u'ぶ', # u'へ[' : u'べ', # u'ほ[' : u'ぼ', # u'は]' : u'ぱ', # u'ひ]' : u'ぴ', # u'ふ]' : u'ぷ', # u'へ]' : u'ぺ', # u'ほ]' : u'ぽ', #} #hiragana, katakana, half_katakana hiragana_katakana_table = { 'あ' : ('ア', 'ア'), 'い' : ('イ', 'イ'), 'う' : ('ウ', 'ウ'), 'え' : ('エ', 'エ'), 'お' : ('オ', 'オ'), 'か' : ('カ', 'カ'), 'き' : ('キ', 'キ'), 'く' : ('ク', 'ク'), 'け' : ('ケ', 'ケ'), 'こ' : ('コ', 'コ'), 'が' : ('ガ', 'ガ'), 'ぎ' : ('ギ', 'ギ'), 'ぐ' : ('グ', 'グ'), 'げ' : ('ゲ', 'ゲ'), 'ご' : ('ゴ', 'ゴ'), 'さ' : ('サ', 'サ'), 'し' : ('シ', 'シ'), 'す' : ('ス', 'ス'), 'せ' : ('セ', 'セ'), 'そ' : ('ソ', 'ソ'), 'ざ' : ('ザ', 'ザ'), 'じ' : ('ジ', 'ジ'), 'ず' : ('ズ', 'ズ'), 'ぜ' : ('ゼ', 'ゼ'), 'ぞ' : ('ゾ', 'ゾ'), 'た' : ('タ', 'タ'), 'ち' : ('チ', 'チ'), 'つ' : ('ツ', 'ツ'), 'て' : ('テ', 'テ'), 'と' : ('ト', 'ト'), 'だ' : ('ダ', 'ダ'), 'ぢ' : ('ヂ', 'ヂ'), 'づ' : ('ヅ', 'ヅ'), 'で' : ('デ', 'デ'), 'ど' : ('ド', 'ド'), 'な' : ('ナ', 'ナ'), 'に' : ('ニ', 'ニ'), 'ぬ' : ('ヌ', 'ヌ'), 'ね' : ('ネ', 'ネ'), 'の' : ('ノ', 'ノ'), 'は' : ('ハ', 'ハ'), 'ひ' : ('ヒ', 'ヒ'), 'ふ' : ('フ', 'フ'), 'へ' : ('ヘ', 'ヘ'), 'ほ' : ('ホ', 'ホ'), 'ば' : ('バ', 'バ'), 'び' : ('ビ', 'ビ'), 'ぶ' : ('ブ', 'ブ'), 'べ' : ('ベ', 'ベ'), 'ぼ' : ('ボ', 'ボ'), 'ぱ' : ('パ', 'パ'), 'ぴ' : ('ピ', 'ピ'), 'ぷ' : ('プ', 'プ'), 'ぺ' : ('ペ', 'ペ'), 'ぽ' : ('ポ', 'ポ'), 'ま' : ('マ', 'マ'), 'み' : ('ミ', 'ミ'), 'む' : ('ム', 'ム'), 'め' : ('メ', 'メ'), 'も' : ('モ', 'モ'), 'や' : ('ヤ', 'ヤ'), 'ゆ' : ('ユ', 'ユ'), 'よ' : ('ヨ', 'ヨ'), 'ら' : ('ラ', 'ラ'), 'り' : ('リ', 'リ'), 'る' : ('ル', 'ル'), 'れ' : ('レ', 'レ'), 'ろ' : ('ロ', 'ロ'), 'わ' : ('ワ', 'ワ'), 'を' : ('ヲ', 'ヲ'), 'ん' : ('ン', 'ン'), 'ぁ' : ('ァ', 'ァ'), 'ぃ' : ('ィ', 'ィ'), 'ぅ' : ('ゥ', 'ゥ'), 'ぇ' : ('ェ', 'ェ'), 'ぉ' : ('ォ', 'ォ'), 'っ' : ('ッ', 'ッ'), 'ゃ' : ('ャ', 'ャ'), 'ゅ' : ('ュ', 'ュ'), 'ょ' : ('ョ', 'ョ'), 'ヵ' : ('ヵ', 'カ'), 'ヶ' : ('ヶ', 'ケ'), 'ゎ' : ('ヮ', 'ワ'), 'ゐ' : ('ヰ', 'ィ'), 'ゑ' : ('ヱ', 'ェ'), 'ヴ' : ('ヴ', 'ヴ'), # symbols 'ー' : ('ー', 'ー'), '、' : ('、', '、'), '。' : ('。', '。'), '!' : ('!', '!'), '\u201d' : ('\u201d', '"'), '#' : ('#', '#'), '$' : ('$', '$'), '%' : ('%', '%'), '&' : ('&', '&'), '\u2019' : ('\u2019', '\''), '(' : ('(', '('), ')' : (')', ')'), '\uff5e' : ('\uff5e', '~'), '=' : ('=', '='), '^' : ('^', '^'), '\' : ('\', '\\'), '|' : ('|', '|'), '\u2018' : ('\u2018', '`'), '@' : ('@', '@'), '゛' : ('゛', '゙'), '{' : ('{', '{'), '゜' : ('゜', '゚'), '「' : ('「', '「'), '+' : ('+', '+'), ';' : (';', ';'), '*' : ('*', '*'), ':' : (':', ':'), '}' : ('}', '}'), '」' : ('」', '」'), '<' : ('<', '<'), '>' : ('>', '>'), '?' : ('?', '?'), '・' : ('・', '・'), '/' : ('/', '/'), '_' : ('_', '_'), '¥' : ('¥', '¥'), # numbers '0': ('0', '0'), '1': ('1', '1'), '2': ('2', '2'), '3': ('3', '3'), '4': ('4', '4'), '5': ('5', '5'), '6': ('6', '6'), '7': ('7', '7'), '8': ('8', '8'), '9': ('9', '9'), } ibus-anthy-1.5.17/engine/python3/test.py000066400000000000000000000010221475510605700200770ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import anthy import sys ctx = anthy.anthy_context () ctx._set_encoding (2) if len(sys.argv) >= 2: ctx.set_string (sys.argv[1]) else: ctx.set_string ("かまぁく") conv_stat = anthy.anthy_conv_stat () seg_stat = anthy.anthy_segment_stat () ctx.get_stat (conv_stat) for i in range (0, conv_stat.nr_segment): ctx.get_segment_stat (i, seg_stat) buf = " " i = ctx.get_segment (i, 0, buf, 10) print buf[:i] # anthy.anthy_release_context (ctx) ctx = None ibus-anthy-1.5.17/engine/python3/thumb.py000066400000000000000000000472351475510605700202570ustar00rootroot00000000000000# -*- coding: utf-8 -*- # vim:set et sts=4 sw=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. __all__ = ( 'ThumbShiftKeyboard', 'ThumbShiftSegment', ) import sys from gi import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') from gi.repository import GLib from gi.repository import IBus import segment _THUMB_BASIC_METHOD = 'base' _table_static = { 'q': ['。', '', 'ぁ'], 'w': ['か', 'が', 'え'], 'e': ['た', 'だ', 'り'], 'r': ['こ', 'ご', 'ゃ'], 't': ['さ', 'ざ', 'れ'], 'y': ['ら', 'よ', 'ぱ'], 'u': ['ち', 'に', 'ぢ'], 'i': ['く', 'る', 'ぐ'], 'o': ['つ', 'ま', 'づ'], 'p': [',', 'ぇ', 'ぴ'], '@': ['、', '', ''], '[': ['゛', '゜', ''], 'a': ['う', '', 'を'], 's': ['し', 'じ', 'あ'], 'd': ['て', 'で', 'な'], 'f': ['け', 'げ', 'ゅ'], 'g': ['せ', 'ぜ', 'も'], 'h': ['は', 'み', 'ば'], 'j': ['と', 'お', 'ど'], 'k': ['き', 'の', 'ぎ'], 'l': ['い', 'ょ', 'ぽ'], ';': ['ん', 'っ', ''], 'z': ['.', '', 'ぅ'], 'x': ['ひ', 'び', 'ー'], 'c': ['す', 'ず', 'ろ'], 'v': ['ふ', 'ぶ', 'や'], 'b': ['へ', 'べ', 'ぃ'], 'n': ['め', 'ぬ', 'ぷ'], 'm': ['そ', 'ゆ', 'ぞ'], ',': ['ね', 'む', 'ぺ'], '.': ['ほ', 'わ', 'ぼ'], '/': ['・', 'ぉ', ''], '1': ['1', '', '?'], '2': ['2', '', '/'], '4': ['4', '', '「'], '5': ['5', '', '」'], '6': ['6', '[', ''], '7': ['7', ']', ''], '8': ['8', '(', ''], '9': ['9', ')', ''], '\\': ['¥', '', ''], } _nicola_j_table_static = { ':': [':', '', ''], '@': ['、', '', ''], '[': ['゛', '゜', ''], ']': ['」', '', ''], '8': ['8', '(', ''], '9': ['9', ')', ''], '0': ['0', '', ''], } _nicola_a_table_static = { ':': [':', '', ''], '@': ['@', '', ''], '[': ['、', '', ''], ']': ['゛', '゜', ''], '8': ['8', '', ''], '9': ['9', '(', ''], '0': ['0', ')', ''], } _nicola_f_table_static = { ':': ['、', '', ''], '@': ['@', '', ''], '[': ['゛', '゜', ''], ']': ['」', '', ''], '8': ['8', '(', ''], '9': ['9', ')', ''], '0': ['0', '', ''], } _kb231_j_fmv_table_static = { '3': ['3', '', '~'], '0': ['0', '『', ''], '-': ['-', '』', ''], '=': ['=', '', ''], } _kb231_a_fmv_table_static = { '3': ['3', '', '~'], '0': ['0', ')', ''], '-': ['-', '『', ''], '=': ['=', '』', ''], } _kb231_f_fmv_table_static = { '3': ['3', '', '~'], '0': ['0', '『', ''], '-': ['-', '』', ''], '=': ['=', '', ''], } _kb611_j_fmv_table_static = { '`': ['‘', '', ''], '^': ['々', '£', ''], ':': [':', '', ''], '@': ['、', '¢', ''], '[': ['゛', '゜', ''], # keysyms are same and keycodes depend on the platforms. #'¥': [u'¥', u'¬', u''], '\\': ['¥', '¦', ''], } _kb611_a_fmv_table_static = { '`': ['々', '', '£'], ':': [':', '', ''], '@': ['@', '', ''], '[': ['、', '¢', ''], #'¥': [u'¥', u'¬', u''], '\\': ['¥', '¦', ''], } _kb611_f_fmv_table_static = { '`': ['‘', '', ''], '^': ['々', '£', ''], ':': ['、', '¢', ''], '@': ['@', '', ''], '[': ['゛', '゜', ''], #'¥': [u'¥', u'¬', u''], '\\': ['¥', '¦', ''], } _shift_table = { 'H': 'ぱ', 'X': 'ぴ', 'V': 'ぷ', 'B': 'ぺ', '>': 'ぽ', } table_static = {} r_table_static = {} for k in list(_table_static.keys()): table_static[ord(k)] = _table_static[k] for c in _table_static[k]: r_table_static[c] = k kana_voiced_consonant_rule = { 'か゛' : 'が', 'き゛' : 'ぎ', 'く゛' : 'ぐ', 'け゛' : 'げ', 'こ゛' : 'ご', 'さ゛' : 'ざ', 'し゛' : 'じ', 'す゛' : 'ず', 'せ゛' : 'ぜ', 'そ゛' : 'ぞ', 'た゛' : 'だ', 'ち゛' : 'ぢ', 'つ゛' : 'づ', 'て゛' : 'で', 'と゛' : 'ど', 'は゛' : 'ば', 'ひ゛' : 'び', 'ふ゛' : 'ぶ', 'へ゛' : 'べ', 'ほ゛' : 'ぼ', 'は゜' : 'ぱ', 'ひ゜' : 'ぴ', 'ふ゜' : 'ぷ', 'へ゜' : 'ぺ', 'ほ゜' : 'ぽ', } _UNFINISHED_HIRAGANA = set('かきくけこさしすせそたちつてとはひふへほ') class ThumbShiftKeyboard: def __init__(self, prefs=None): self.__prefs = prefs self.__table = table_static self.__r_table = r_table_static self.__shift_table = {} self.__ls = 0 self.__rs = 0 self.__t1 = 0 self.__t2 = 0 self.__layout = 0 self.__fmv_extension = 2 self.__handakuten = False self.__thumb_typing_rule_method = None self.__init_thumb_typing_rule() self.__init_layout_table() if self.__prefs != None: self.reset() self.__reset_shift_table(False) def __init_thumb_typing_rule(self): prefs = self.__prefs if prefs == None: self.__thumb_typing_rule_method = None return method = prefs.get_value('thumb-typing-rule', 'method') if method == None: method = _THUMB_BASIC_METHOD self.__thumb_typing_rule_method = method keymap = prefs.get_value('thumb-typing-rule', 'list') if self.__thumb_typing_rule_method not in keymap.keys(): self.__thumb_typing_rule_method = None def __init_layout_table(self): if self.__table != {}: self.__table.clear() if self.__r_table != {}: self.__r_table.clear() method = self.__thumb_typing_rule_method if method != None: prefs = self.__prefs keymap = prefs.get_value('thumb-typing-rule', 'list')[method] for k in keymap.keys(): value = keymap.get(k) ch = prefs.typing_from_config_key(k) if ch == '': continue self.__set_bus_table(ch, value) else: for k in list(_table.keys()): self.__table[ord(k)] = _table_static[k] for c in _table_static[k]: self.__r_table[c] = k def __set_bus_table(self, key, value): prefs = self.__prefs if value == None or len(value) != 3: return if value[0] == '' and \ value[1] == '' and value[2] == '': return self.__table[ord(key)] = value for c in value: self.__r_table[c] = key def __reset_layout_table(self, init, j_table_label, j_table, a_table_label, a_table, f_table_label, f_table): if init: self.__init_layout_table() method = None sub_table = None if self.__layout == 0: method = j_table_label sub_table = j_table elif self.__layout == 1: method = a_table_label sub_table = a_table elif self.__layout == 2: method = f_table_label sub_table = f_table if method == None or sub_table == None: return method = self.__thumb_typing_rule_method if method != None: prefs = self.__prefs keymap = prefs.get_value('thumb-typing-rule', 'list')[method] for k in keymap.keys(): value = keymap.get(k) ch = prefs.typing_from_config_key(k) if ch == '': continue self.__set_bus_table(ch, value) else: for k in list(sub_table.keys()): self.__table[ord(str(k))] = sub_table[k] for c in sub_table[k]: self.__r_table[c] = k def __reset_extension_table(self, init): self.__reset_layout_table(init, 'nicola_j_table', _nicola_j_table_static, 'nicola_a_table', _nicola_a_table_static, 'nicola_f_table', _nicola_f_table_static) if self.__fmv_extension == 0: return if self.__fmv_extension >= 1: self.__reset_layout_table(False, 'kb231_j_fmv_table', _kb231_j_fmv_table_static, 'kb231_a_fmv_table', _kb231_a_fmv_table_static, 'kb231_f_fmv_table', _kb231_f_fmv_table_static) if self.__fmv_extension >= 2: self.__reset_layout_table(False, 'kb611_j_fmv_table', _kb611_j_fmv_table_static, 'kb611_a_fmv_table', _kb611_a_fmv_table_static, 'kb611_f_fmv_table', _kb611_f_fmv_table_static) def __reset_shift_table(self, init): self.__reset_extension_table(init) if self.__handakuten: for k in list(_shift_table.keys()): self.__shift_table[ord(k)] = _shift_table[k] self.__r_table[_shift_table[k]] = k elif self.__shift_table != {}: for k in list(_shift_table.keys()): if ord(k) in self.__shift_table: del self.__shift_table[ord(k)] if _shift_table[k] in self.__r_table: del self.__r_table[_shift_table[k]] def __s_to_key_raw(self, s): keyval = IBus.keyval_from_name(s.split('+')[-1]) s = s.lower() state = ('shift+' in s and IBus.ModifierType.SHIFT_MASK or 0) | ( 'ctrl+' in s and IBus.ModifierType.CONTROL_MASK or 0) | ( 'alt+' in s and IBus.ModifierType.MOD1_MASK or 0) return (keyval, state) def __get_xkb_layout(self): # Until Gdk.property_get is fixed ''' # Move importing Gdk into ThumbShiftKeyboard from the header # because ibus-engine-anthy --xml does not requre to open X. try: from gi.repository import Gdk get_default_root_window = Gdk.get_default_root_window property_get = Gdk.property_get intern = Gdk.Atom.intern except ImportError: get_default_root_window = lambda : None property_get = lambda : None intern = lambda : None except RuntimeError: # Do we support the engine without display? print >> sys.stderr, "Gdk couldn't be initialized" print >> sys.stderr, 'Could not open display' get_default_root_window = lambda : None property_get = lambda : None intern = lambda : None root_window = get_default_root_window() if not root_window: return 0 xkb_rules_names = intern('_XKB_RULES_NAMES', False) xa_string = intern('STRING', False) try: prop = property_get(root_window, xkb_rules_names, xa_string, 0, 1024, 0)[3] layout_list = prop.split('\0') except TypeError: print >> sys.stderr, \ 'This problem is fixed in the latest gobject-introspection' print >> sys.stderr, \ 'https://bugzilla.gnome.org/show_bug.cgi?id=670509' return 0 layout = 0 for data in layout_list: if data == 'jp': layout = 0 elif data == 'us': layout = 1 elif data.find('japan:nicola_f_bs') >= 0: layout = 2 elif data.find('japan:') >= 0: layout = 0 return layout ''' layout = 0 argv = ['setxkbmap', '-query'] (ret, std_out, std_error, exit_status) = \ GLib.spawn_sync(None, argv, None, GLib.SpawnFlags.SEARCH_PATH_FROM_ENVP, None, None) if not ret: print(std_error.decode('utf-8'), file=sys.stderr) return layout for line in std_out.decode('utf-8').split('\n'): if line.startswith('layout:'): data = line.split()[1] if data == 'jp': layout = 0 elif data == 'us': layout = 1 elif line.startswith('options:'): data = line.split()[1] if data.find('japan:nicola_f_bs') >= 0: layout = 2 elif data.find('japan:') >= 0: layout = 0 return layout def __reset_layout_and_handakuten(self): mode = self.__prefs.get_value('thumb', 'keyboard-layout-mode') layout = 0 if mode == 1: layout = self.__get_xkb_layout() else: layout = self.__prefs.get_value('thumb', 'keyboard-layout') self.set_layout(layout) fmv_extension = self.__prefs.get_value('thumb', 'fmv-extension') self.set_fmv_extension(fmv_extension) handakuten = self.__prefs.get_value('thumb', 'handakuten') self.set_handakuten(handakuten) def reset(self): s = self.__prefs.get_value('thumb', 'ls') ls, state = self.__s_to_key_raw(s) if ls == 0xffffff: ls = IBus.KEY_Muhenkan self.set_ls(ls) s = self.__prefs.get_value('thumb', 'rs') rs, state = self.__s_to_key_raw(s) if rs == 0xffffff: rs = IBus.KEY_Henkan self.set_rs(rs) t1 = self.__prefs.get_value('thumb', 't1') t2 = self.__prefs.get_value('thumb', 't2') self.set_t1(t1) self.set_t2(t2) GLib.idle_add(self.__reset_layout_and_handakuten, priority = GLib.PRIORITY_LOW) def get_ls(self): return self.__ls def set_ls(self, ls): self.__ls = ls def get_rs(self): return self.__rs def set_rs(self, rs): self.__rs = rs def get_t1(self): return self.__t1 def set_t1(self, t1): self.__t1 = t1 def get_t2(self): return self.__t2 def set_t2(self, t2): self.__t2 = t2 def get_layout(self): return self.__layout def set_layout(self, layout): if self.__layout == layout: return self.__layout = layout self.__reset_shift_table(True) def get_fmv_extension (self): return self.__fmv_extension def set_fmv_extension (self, fmv_extension): if self.__fmv_extension == fmv_extension: return self.__fmv_extension = fmv_extension self.__reset_shift_table(True) def get_handakuten(self): return self.__handakuten def set_handakuten(self, handakuten): if self.__handakuten == handakuten: return self.__handakuten = handakuten self.__reset_shift_table(True) def get_char(self, key, fallback=None): return self.__table.get(key, fallback) def get_chars(self): return list(self.__table.keys()) def get_r_char(self, key, fallback=None): return self.__r_table.get(key, fallback) def get_r_chars(self): return list(self.__r_table.keys()) def get_shift_char(self, key, fallback=None): return self.__shift_table.get(key, fallback) def get_shift_chars(self): return list(self.__shift_table.keys()) class ThumbShiftSegment(segment.Segment): _prefs = None _thumb_typing_rule_section_base = None _thumb_typing_rule_section = None _r_table = {} def __init__(self, enchars='', jachars=''): if not jachars: if '!' <= enchars <= '~': jachars = segment.unichar_half_to_full(enchars) else: jachars = enchars enchars = self._r_table.get(jachars, '') super(ThumbShiftSegment, self).__init__(enchars, jachars) @classmethod def INIT_THUMB_TYPING_RULE(cls, prefs): cls._prefs = prefs if prefs == None: cls._thumb_typing_rule_section = None return method = prefs.get_value('thumb-typing-rule', 'method') if method == None: method = _THUMB_BASIC_METHOD cls._thumb_typing_rule_method = method keymap = prefs.get_value('thumb-typing-rule', 'list') if cls._thumb_typing_rule_method not in keymap.keys(): cls._thumb_typing_rule_method = None cls._init_layout_table() @classmethod def _init_layout_table(cls): if cls._r_table != {}: cls._r_table.clear() method = cls._thumb_typing_rule_method if method != None: prefs = cls._prefs keymap = prefs.get_value('thumb-typing-rule', 'list')[method] for k in keymap.keys(): value = keymap.get(k) ch = prefs.typing_from_config_key(k) if ch == '': continue cls._set_bus_table(ch, value) else: for k in list(_table.keys()): for c in _table_static[k]: cls._r_table[c] = k @classmethod def _set_bus_table(cls, key, value): prefs = cls._prefs if value == None or len(value) != 3: return if value[0] == '' and \ value[1] == '' and value[2] == '': return for c in value: cls._r_table[c] = key def is_finished(self): return not (self._jachars in _UNFINISHED_HIRAGANA) def append(self, enchar): if enchar == '\0' or enchar == '': return [] text = self._jachars + enchar jachars = kana_voiced_consonant_rule.get(text, None) if jachars: self._enchars = self._enchars + self._r_table.get(enchar, '') self._jachars = jachars return [] return [ThumbShiftSegment(enchar)] def prepend(self, enchar): if enchar == '\0' or enchar == '': return [] if self._jachars == '': if 0x21 <= enchars <= 0x7e: self._enchars = enchar self._jachars = segment.unichar_half_to_full(enchars) else: self._enchars = self._r_table.get(enchar, '') self._jachars = enchar return [] return [ThumbShiftSegment(enchar)] def pop(self, index=-1): self._enchars = '' self._jachars = '' return ibus-anthy-1.5.17/gir/000077500000000000000000000000001475510605700144635ustar00rootroot00000000000000ibus-anthy-1.5.17/gir/Makefile.am000066400000000000000000000051271475510605700165240ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2012-2019 Takao Fujiwara # Copyright (c) 2012 Peng Huang # Copyright (c) 2012-2013 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. INTROSPECTION_GIRS = libanthygobject = libanthygobject-1.0.la AM_CPPFLAGS = \ @GOBJECT2_CFLAGS@ \ @ANTHY_CFLAGS@ \ $(NULL) libanthygobject_LTLIBRARIES = $(libanthygobject) libanthygobjectdir = @ANTHY_GOBJECT_LIBDIR@ libanthygobject_1_0_la_SOURCES = \ anthygcontext.c \ $(NULL) libanthygobject_1_0_la_LIBADD = \ @GOBJECT2_LIBS@ \ @ANTHY_LIBS@ \ $(NULL) libanthygobject_1_0_la_LDFLAGS = \ -no-undefined \ -export-symbols-regex "anthy_.*" \ -version-info @LT_VERSION_INFO@ \ $(NULL) ANTHY_INCLUDEDIR = $(shell pkg-config --variable=includedir $(ANTHY_PC)) anthyincludedir = $(includedir)/ibus-anthy-1.0 anthyinclude_HEADERS = \ anthygcontext.h \ $(NULL) # gobject introspection -include $(INTROSPECTION_MAKEFILE) Anthy-9000.gir: $(libanthygobject) Makefile Anthy_9000_gir_SCANNERFLAGS = \ --pkg=$(ANTHY_PC) \ --external-library \ --reparse-validate \ --identifier-prefix=Anthy \ --symbol-prefix=anthy \ --accept-unprefixed \ --warn-all \ $(NULL) Anthy_9000_gir_INCLUDES = GObject-2.0 Anthy_9000_gir_LIBS = $(libanthygobject) $(ANTHY_PC) Anthy_9000_gir_CFLAGS = @ANTHY_CFLAGS@ Anthy_9000_gir_FILES = \ $(libanthygobject_1_0_la_SOURCES) \ $(anthyinclude_HEADERS) \ $(ANTHY_INCLUDEDIR)/anthy/anthy.h \ $(NULL) INTROSPECTION_GIRS += Anthy-9000.gir girdir = @ANTHY_GOBJECT_GIRDIR@ dist_gir_DATA = $(INTROSPECTION_GIRS) typelibsdir = @ANTHY_GOBJECT_TYPELIBSDIR@ typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) noinst_PROGRAMS = test test_SOURCES = test.c test_LDADD = \ $(libanthygobject) \ @GOBJECT2_LIBS@ \ @ANTHY_LIBS@ \ $(NULL) CLEANFILES = \ $(dist_gir_DATA) \ $(typelibs_DATA) \ $(NULL) DISTCLEANFILES = \ $(NULL) ibus-anthy-1.5.17/gir/anthygcontext.c000066400000000000000000000146411475510605700175340ustar00rootroot00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus-anthy - The Anthy engine for IBus * Copyright (c) 2012-2021 Takao Fujiwara * Copyright (c) 2012 Peng Huang * Copyright (c) 2012-2013 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. */ #include #include extern void anthy_init_personality (void); extern int anthy_do_set_personality (const char *id); #include "anthygcontext.h" #define ANTHY_GCONTEXT_GET_PRIVATE(o) \ ((AnthyGContextPrivate *)anthy_gcontext_get_instance_private (o)) struct _AnthyGContextPrivate { anthy_context_t context; }; static GObject *anthy_gcontext_constructor (GType type, guint n, GObjectConstructParam *args); static void anthy_gcontext_dispose (GObject *gobject); static void anthy_gcontext_finalize (GObject *gobject); G_DEFINE_TYPE_WITH_PRIVATE (AnthyGContext, anthy_gcontext, G_TYPE_INITIALLY_UNOWNED) static void anthy_gcontext_class_init (AnthyGContextClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); gobject_class->constructor = anthy_gcontext_constructor; gobject_class->dispose = anthy_gcontext_dispose; gobject_class->finalize = anthy_gcontext_finalize; } static void anthy_gcontext_init (AnthyGContext *obj) { obj->priv = ANTHY_GCONTEXT_GET_PRIVATE (obj); anthy_init (); obj->priv->context = anthy_create_context (); } static GObject * anthy_gcontext_constructor (GType type, guint n, GObjectConstructParam *args) { GObject *object; object = G_OBJECT_CLASS (anthy_gcontext_parent_class)->constructor (type, n ,args); return object; } static void anthy_gcontext_dispose (GObject *gobject) { G_OBJECT_CLASS (anthy_gcontext_parent_class)->dispose (gobject); } static void anthy_gcontext_finalize (GObject *gobject) { G_OBJECT_CLASS (anthy_gcontext_parent_class)->finalize (gobject); } AnthyGContext * anthy_gcontext_new (void) { GObject *gobject = g_object_new (ANTHY_TYPE_GCONTEXT, NULL); return ANTHY_GCONTEXT (gobject); } #define ANTHY_OBJECT_FUNCTION_ASSERTIONS() \ { \ g_assert (obj != NULL); \ g_assert (obj->priv != NULL); \ g_assert (obj->priv->context != NULL); \ } int anthy_gcontext_set_encoding (AnthyGContext *obj, int encoding) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); return anthy_context_set_encoding (obj->priv->context, encoding); } void anthy_gcontext_init_personality (AnthyGContext *obj) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); anthy_init_personality (); } int anthy_gcontext_do_set_personality (AnthyGContext *obj, const gchar *dict_name) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); return anthy_do_set_personality (dict_name); } void anthy_gcontext_resize_segment (AnthyGContext *obj, int nth, int resize) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); anthy_resize_segment (obj->priv->context, nth, resize); } int anthy_gcontext_set_string (AnthyGContext *obj, const gchar * string) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); return anthy_set_string (obj->priv->context, string); } int anthy_gcontext_get_nr_segments (AnthyGContext *obj) { struct anthy_conv_stat conv_stat = { 0, }; ANTHY_OBJECT_FUNCTION_ASSERTIONS (); anthy_get_stat(obj->priv->context, &conv_stat); return conv_stat.nr_segment; } gchar * anthy_gcontext_get_segment (AnthyGContext *obj, int nth_seg, int nth_lookup) { int length; static char temp[512]; ANTHY_OBJECT_FUNCTION_ASSERTIONS (); length = anthy_get_segment (obj->priv->context, nth_seg, nth_lookup, temp, sizeof (temp)); if (length >= 0) { return g_strdup (temp); } else { return NULL; } } int anthy_gcontext_commit_segment(AnthyGContext *obj, int nth_seg, int nth_lookup) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); return anthy_commit_segment (obj->priv->context, nth_seg, nth_lookup); } int anthy_gcontext_get_nr_candidates (AnthyGContext *obj, int nth_seg) { struct anthy_segment_stat seg_stat = { 0, }; ANTHY_OBJECT_FUNCTION_ASSERTIONS (); anthy_get_segment_stat (obj->priv->context, nth_seg, &seg_stat); return seg_stat.nr_candidate; } int anthy_gcontext_set_prediction_string (AnthyGContext *obj, const gchar * string) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); return anthy_set_prediction_string (obj->priv->context, string); } int anthy_gcontext_get_nr_predictions (AnthyGContext *obj) { struct anthy_prediction_stat seg_stat = { 0, }; ANTHY_OBJECT_FUNCTION_ASSERTIONS (); anthy_get_prediction_stat (obj->priv->context, &seg_stat); return seg_stat.nr_prediction; } gchar * anthy_gcontext_get_prediction (AnthyGContext *obj, int nth_seg) { int length; static char temp[512]; ANTHY_OBJECT_FUNCTION_ASSERTIONS (); length = anthy_get_prediction (obj->priv->context, nth_seg, temp, sizeof (temp)); if (length >= 0) { return g_strdup (temp); } else { return NULL; } } int anthy_gcontext_commit_prediction (AnthyGContext *obj, int nth_seg) { ANTHY_OBJECT_FUNCTION_ASSERTIONS (); return anthy_commit_prediction (obj->priv->context, nth_seg); } void anthy_gcontext_set_logger (int level) { anthy_set_logger (NULL, level); } #undef ANTHY_OBJECT_FUNCTION_ASSERTIONS ibus-anthy-1.5.17/gir/anthygcontext.h000066400000000000000000000143671475510605700175460ustar00rootroot00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus-anthy - The Anthy engine for IBus * Copyright (c) 2012-2019 Takao Fujiwara * Copyright (c) 2012 Peng Huang * Copyright (c) 2012-2013 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. */ #ifndef __ANTHY_GCONTEXT_H_ #define __ANTHY_GCONTEXT_H_ #include #include /* * Type macros. */ #define ANTHY_TYPE_GCONTEXT \ (anthy_gcontext_get_type ()) #define ANTHY_GCONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), ANTHY_TYPE_GCONTEXT, AnthyGContext)) #define ANTHY_GCONTEXT_CLASS(class) \ (G_TYPE_CHECK_CLASS_CAST ((class), ANTHY_TYPE_GCONTEXT, AnthyGContextClass)) #define ANTHY_IS_GCONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ANTHY_TYPE_GCONTEXT)) #define ANTHY_IS_GCONTEXT_CLASS(class) \ (G_TYPE_CHECK_CLASS_TYPE ((class), ANTHY_TYPE_GCONTEXT)) #define ANTHY_GCONTEXT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), ANTHY_TYPE_GCONTEXT, AnthyGContextClass)) typedef struct _AnthyGContext AnthyGContext; typedef struct _AnthyGContextPrivate AnthyGContextPrivate; typedef struct _AnthyGContextClass AnthyGContextClass; G_BEGIN_DECLS /** * AnthyGContext: * * An #AnthyGContext is an object that handles conversion strings. */ struct _AnthyGContext { GInitiallyUnowned parent; AnthyGContextPrivate *priv; /*< private >*/ gpointer pdummy[8]; }; struct _AnthyGContextClass { GInitiallyUnownedClass parent; /*< private >*/ gpointer pdummy[8]; }; GType anthy_gcontext_get_type (void); /** * anthy_gcontext_new: * @returns: A newly allocated #AnthyGContext * * New an #AnthyGobject. */ AnthyGContext *anthy_gcontext_new (void); /** * anthy_gcontext_set_encoding: * @encoding: An encoding * * Set an encoding. */ int anthy_gcontext_set_encoding (AnthyGContext *obj, int encoding); /** * anthy_gcontext_init_personality: * * Initialize the personal dictionaries. */ void anthy_gcontext_init_personality (AnthyGContext *obj); /** * anthy_gcontext_do_set_personality: * @dict_name: a Dictionary name * * Set a personal dictionary. */ int anthy_gcontext_do_set_personality (AnthyGContext *obj, const gchar *dict_name); /** * anthy_gcontext_resize_segment: * @nth: nth segment * @resize: size * * Resize the nth segment. */ void anthy_gcontext_resize_segment (AnthyGContext *obj, int nth, int resize); /** * anthy_gcontext_set_string: * @string: A conversion string * * Set a conversion string. */ int anthy_gcontext_set_string (AnthyGContext *obj, const gchar * string); /** * anthy_gcontext_get_nr_segments: * @returns: The number of the converted segments * * The number of the converted segments */ int anthy_gcontext_get_nr_segments (AnthyGContext *obj); /** * anthy_gcontext_get_segment: * @nth_seg: Nth segment * @nth_lookup: Nth lookup * @returns: A newly assigned string. * * A newly assigned string with @ntg_seg and @nth_lookup . */ gchar * anthy_gcontext_get_segment (AnthyGContext *obj, int nth_seg, int nth_lookup); /** * anthy_gcontext_commit_segment: * @nth_seg: Nth segment * @nth_lookup: Nth lookup * * Commit a string with @ntg_seg and @nth_lookup. */ int anthy_gcontext_commit_segment (AnthyGContext *obj, int nth_seg, int nth_lookup); /** * anthy_gcontext_get_nr_candidates: * @returns: The number of the candidates * * The number of the candidates */ int anthy_gcontext_get_nr_candidates (AnthyGContext *obj, int nth_seg); /** * anthy_gcontext_set_prediction_string: * @string: A prediction string * * Set a prediction string. */ int anthy_gcontext_set_prediction_string (AnthyGContext *obj, const gchar * string); /** * anthy_gcontext_get_nr_predictions: * @returns: The number of the converted segments in the current * prediction string. * * The number of the converted segments in the current prediction string. */ int anthy_gcontext_get_nr_predictions (AnthyGContext *obj); /** * anthy_gcontext_get_prediction: * @nth_seg: Nth segment * @returns: A newly assigned string. * * A newly assigned string with @ntg_seg . */ gchar * anthy_gcontext_get_prediction (AnthyGContext *obj, int nth_seg); /** * anthy_gcontext_commit_prediction: * @nth_seg: Nth segment * * Commit a prediction string with @ntg_seg . */ int anthy_gcontext_commit_prediction (AnthyGContext *obj, int nth_seg); /** * anthy_gcontext_set_logger: * @level: Log level * * Set Anthy log level. */ void anthy_gcontext_set_logger (int level); G_END_DECLS #endif ibus-anthy-1.5.17/gir/test.c000066400000000000000000000021451475510605700156100ustar00rootroot00000000000000#include #include "anthygcontext.h" int main (int argc, char *argv[]) { AnthyGContext *obj = NULL; gchar *string = NULL; #if !GLIB_CHECK_VERSION(2,35,0) g_type_init (); #endif anthy_gcontext_set_logger (0); obj = anthy_gcontext_new (); anthy_gcontext_set_encoding (obj, ANTHY_UTF8_ENCODING); anthy_gcontext_init_personality (obj); anthy_gcontext_do_set_personality(obj, "ibus__ibus_symbol"); anthy_gcontext_set_string (obj, "てすと"); anthy_gcontext_resize_segment (obj, 0, -1); printf ("%d\n", anthy_gcontext_get_nr_segments (obj)); printf ("%d\n", anthy_gcontext_get_nr_candidates (obj, 0)); string = anthy_gcontext_get_segment (obj, 0, 0); printf ("%s\n", string ? string : "(null)"); anthy_gcontext_commit_segment (obj, 0, 0); anthy_gcontext_set_prediction_string (obj, "てすと"); printf ("%d\n", anthy_gcontext_get_nr_predictions (obj)); string = anthy_gcontext_get_prediction (obj, 0); printf ("%s\n", string ? string : "(null)"); anthy_gcontext_commit_prediction (obj, 0); g_object_unref (obj); return 0; } ibus-anthy-1.5.17/gir/test.py000066400000000000000000000010441475510605700160130ustar00rootroot00000000000000# -*- coding: utf-8 -*- from gi.repository import GObject from gi.repository import Anthy anthy = Anthy.GContext() anthy.set_encoding(Anthy.UTF8_ENCODING) anthy.init_personality() anthy.do_set_personality('ibus__ibus_symbol') anthy.set_string('てすと') anthy.resize_segment(0, -1) print anthy.get_nr_segments() print anthy.get_nr_candidates(0) print anthy.get_segment(0, 0) print anthy.commit_segment(0, 0) anthy.set_prediction_string('てすと') print anthy.get_nr_predictions() print anthy.get_prediction(0) print anthy.commit_prediction(0) ibus-anthy-1.5.17/ibus-anthy.spec.in000066400000000000000000000061011475510605700172440ustar00rootroot00000000000000%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %{!?enable_kasumi: %define enable_kasumi 0} %define sub_version 1.0 %define require_ibus_version 1.4.2 Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ Release: 1%{?dist} Summary: The Anthy engine for IBus input platform License: GPLv2+ Group: System Environment/Libraries URL: https://github.com/ibus/ibus/wiki Source0: https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: anthy-devel BuildRequires: glib2-devel BuildRequires: gettext-devel BuildRequires: ibus BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: gobject-introspection-devel Requires: ibus >= %require_ibus_version Requires: pygobject3 Requires: anthy %if %enable_kasumi Requires: kasumi %endif %description The Anthy engine for IBus platform. It provides Japanese input method from libanthy. %package devel Summary: Development tools for ibus Group: Development/Libraries Requires: %{name} = %{version}-%{release} Requires: glib2-devel Requires: anthy-devel %description devel The ibus-anthy-devel package contains .so file and .gir files for developers. %prep %setup -q %build %configure --disable-static # make -C po update-gmo make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make DESTDIR=${RPM_BUILD_ROOT} install rm -f $RPM_BUILD_ROOT%{_libdir}/libanthygobject-%{sub_version}.la %find_lang %{name} %clean rm -rf $RPM_BUILD_ROOT %post # recreate icon cache touch --no-create %{_datadir}/icons/hicolor || : [ -x %{_bindir}/gtk-update-icon-cache ] && \ %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : [ -x %{_bindir}/glib-compile-schemas ] && \ [ -d %{_datadir}/glib-2.0/schemas ] && \ %{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %postun # recreate icon cache touch --no-create %{_datadir}/icons/hicolor || : [ -x %{_bindir}/gtk-update-icon-cache ] && \ %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : [ -x %{_bindir}/glib-compile-schemas ] && \ [ -d %{_datadir}/glib-2.0/schemas ] && \ %{_bindir}/glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %files -f %{name}.lang %defattr(-,root,root,-) %doc AUTHORS COPYING README # %dir %{python_sitearch}/ibus %{_libdir}/girepository-1.0/Anthy*.typelib %{_libdir}/libanthygobject-%{sub_version}.so.* %{_libexecdir}/ibus-*-anthy %{_datadir}/appdata/*.appdata.xml %{_datadir}/applications/ibus-setup-anthy.desktop %{_datadir}/glib-2.0/schemas/org.freedesktop.ibus.engine.anthy.gschema.xml %{_datadir}/ibus-anthy %{_datadir}/ibus/component/* %{_datadir}/icons/hicolor/scalable/apps/ibus-anthy.svg %files devel %{_datadir}/gir-1.0/Anthy*.gir %{_includedir}/ibus-anthy-%{sub_version} %{_libdir}/libanthygobject-%{sub_version}.so %changelog * @DATE_DISPLAY@ Peng Huang - @PACKAGE_VERSION@-1 - Current version. ibus-anthy-1.5.17/icons/000077500000000000000000000000001475510605700150155ustar00rootroot00000000000000ibus-anthy-1.5.17/icons/Makefile.am000066400000000000000000000025421475510605700170540ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2013 Takao Fujiwara # Copyright (c) 2007-2013 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. if HAVE_PRIVATE_PNG pngicons_DATA = \ ibus-anthy.png \ $(NULL) else pngicons_files = \ ibus-anthy.png \ $(NULL) endif pngiconsdir = $(pkgdatadir)/icons scalable_icons_DATA = \ ibus-anthy.svg \ $(NULL) # You need to run gtk-update-icon-cache after the icons are installed. scalable_iconsdir = $(datadir)/icons/hicolor/scalable/apps/ EXTRA_DIST = \ $(pngicons_DATA) \ $(pngicons_files) \ $(scalable_icons_DATA) \ $(NULL) ibus-anthy-1.5.17/icons/ibus-anthy-old.png000066400000000000000000000032721475510605700203660ustar00rootroot00000000000000PNG  IHDR szzbKGD pHYs  tIME 9QGIDATx}LU?y" Rq겮M4giM4{Mffln,֭fu[6E-DQS"(rr8@/ɒ=/{|y9?MDDd[ AF`KgYv˹?EdO.\jQ[W_v&"3o;Ї8| ;.ܾ·(uR-Ԭ(%0Y;8O}[Dn/q eV3%M0{ &1ؗºs#Hn ĭ;Iat.bA`d!@~?&$e|qԄC`*\ڍnQ°@K 0A)t&cP:RJ?iCCsFL> z&>0|g# ?~lҙ)g͵W_. ( 1Sd CK-ʜͦ)uEڛOt iApB9Wc  z$x %Ȧ. \ (D*eci5 tV:ig69<TíSXS=$zД@RC- T$`*h tgD h?8JΗ T) Qita",5I[C'auys?~|e(U5,">Q )ݶL'((w-R pmeoK(<,sR?9K3,QfCJ`C/oQhtzTZ@_V`rnh\Bq=!DHZךhU` .L"e gllF @J0:1ܒ!$93 &Ʊsń[59cӐܼs5TfZW``nKݟP_ˢ-JOIz{ٺu+~9!yA cY=Y2fsuq>Zc@;Kj ^јBb,^+_B !,^7ҳT-TZ᭨nEh-_B.9ɓ86nId*Fh<hWWm1vqw:` !J,?fipw Bgٽs )89ᯡocFFFo@kHǐV˲BʚX4cgi eR ^ZHk͢m,YRSt@WB4C&ST]lܴ[,wpXn2ٹs7o, 7ߞ8i|W Th].vu QZaʂ ŀXq2Y ΑKGi^+VQQct0M_]8p~_[f3AUuVjkkquSYJ!B.X C29{Mtj ;g,YKh`SE8#(J*YU)N~܃LbU B4QLgcMA)B (}!.LOq&*++Rr/ZiYŅWX0Jo8)0۶DC}-i?Dh2׍iWKk]+Mr0qi6Y͚5k0MrسFV;3VrL;-PVr(Nñs8qnĿh?MB6@k Cv4\7gyc By7SţXua<Kq8.8V&ʆ S[[  uU3:>0ՕR;ayVfa,G8Ji@^yny#ej}`y},q4z'z}Q+l޲ʒ lۼ =ē9uttt}v<B>d$. 2kVdL{FFҔ|\.WhFlk)9$-P]]]yJ]89ւlzQ645ܼǃ #ڽ;n䍣Od0𣏸޻o@)͛u?Nt1R8466r[Yv-|h 0<<…4n>;orNbИZnEg;1M) ̺֭ eM]@˹1 YFh20uuH)73wq6oLKK { ^VQXJil+Dž~GOdӉذ~ **JEM0PJ320_<]Χ޾FO| ;ٳl߾KUZvR|>---455vhzRaڶ?M0`K.tcS٪ %$_43H(w2ϝczzz\.;vlgݺ|l܋ T* ͐lja>\rrb,+Kv,p(PЄ?噤aPYo 4X؎BJI8&Q bs8)TVĥs˩mjQ7֤l?gϞeΝxy~28 6nDuu5m#jWdĶiUI{YC$DjLCbTw8C*/ȱw34:e39>ʚ۾ĪU0 (ƶBA6x.cND,gy]CmGm*^GXZQX'; #s1H'dlߺk >?)6jFضD8FooװÓ R줵v4+lq7Oxk__8&"ˑEB T@ lJMMM)}(r.dӓa箛he ݐ!;LwΖ}_bk[i\GP~;Lt& TBhAUC'g5ʼn'8pzHhf:i^eY}w;vfdYtT![}u*1d ]ᔯ%i'Le1FޢE7x6  vͷ|^xD"NgS.D_LJxǟ0Bmch kbr\(NSUUE6 166Ǝ; qcժUt\8@h,ƪǔBڕ.pn"H>^$yy饗FFFY?~9s$ <Y'|g9wO<ݻW^yv$:t5ki"//Ng~4 f/Y,Bʻq})W#033C.+)088?O {att_|[R^^.X&4wS."ıӧO>|)bXi˼ɞ 忺r̰j*FF[+חtjkk  Jc d8{ ^!JQQQٜ0 'פ|sϟ{ԩSw)į~3(q`0Ȯ]H$%FFZSWWG<'<!Lb(gÆ ΢ҊP(Rŋ395Y 1^/]]]TUU8R -~ )COfϞ=~4x r ۶y饗FgZ3598,[l^q NhhhvlXt)0;;K&!`YV!q`@\6! p5~x<.\<Ͽ9sf 7mvҥKOkkIO )j?~+𵊊iE…MӼqѢEktgW+**QJYϟ image/svg+xml ibus-anthy-1.5.17/m4/000077500000000000000000000000001475510605700142225ustar00rootroot00000000000000ibus-anthy-1.5.17/m4/.gitignore000066400000000000000000000000051475510605700162050ustar00rootroot00000000000000*.m4 ibus-anthy-1.5.17/m4/Makefile.am000066400000000000000000000021411475510605700162540ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2013 Takao Fujiwara # Copyright (c) 2007-2013 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. EXTRA_DIST = \ as-version.m4 \ gettext.m4 \ iconv.m4 \ lib-ld.m4 \ lib-link.m4 \ lib-prefix.m4 \ nls.m4 \ po.m4 \ progtest.m4 \ $(NULL) ibus-anthy-1.5.17/m4/as-version.m4000066400000000000000000000037701475510605700165610ustar00rootroot00000000000000dnl as-version.m4 0.2.0 dnl autostars m4 macro for versioning dnl Thomas Vander Stichele dnl $Id: as-version.m4,v 1.4 2004/06/01 09:40:05 thomasvs Exp $ dnl AS_VERSION dnl example dnl AS_VERSION dnl this macro dnl - AC_SUBST's PACKAGE_VERSION_MAJOR, _MINOR, _MICRO dnl - AC_SUBST's PACKAGE_VERSION_RELEASE, dnl which can be used for rpm release fields dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents dnl maintainer mode from running correctly dnl dnl don't forget to put #undef PACKAGE_VERSION_RELEASE in acconfig.h dnl if you use acconfig.h AC_DEFUN([AS_VERSION], [ PACKAGE_VERSION_MAJOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f1) PACKAGE_VERSION_MINOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f2) PACKAGE_VERSION_MICRO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f3) AC_SUBST(PACKAGE_VERSION_MAJOR) AC_SUBST(PACKAGE_VERSION_MINOR) AC_SUBST(PACKAGE_VERSION_MICRO) ]) dnl AS_NANO(ACTION-IF-NO-NANO, [ACTION-IF-NANO]) dnl requires AC_INIT to be called before dnl For projects using a fourth or nano number in your versioning to indicate dnl development or prerelease snapshots, this macro allows the build to be dnl set up differently accordingly. dnl this macro: dnl - parses AC_PACKAGE_VERSION, set by AC_INIT, and extracts the nano number dnl - sets the variable PACKAGE_VERSION_NANO dnl - sets the variable PACKAGE_VERSION_RELEASE, which can be used dnl for rpm release fields dnl - executes ACTION-IF-NO-NANO or ACTION-IF-NANO dnl example: dnl AS_NANO(RELEASE="yes", RELEASE="no") AC_DEFUN([AS_NANO], [ AC_MSG_CHECKING(nano version) NANO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f4) if test x"$NANO" = x || test "x$NANO" = "x0" ; then AC_MSG_RESULT([0 (release)]) NANO=0 PACKAGE_VERSION_RELEASE=1 ifelse([$1], , :, [$1]) else AC_MSG_RESULT($NANO) PACKAGE_VERSION_RELEASE=0.`date +%Y%m%d.%H%M%S` ifelse([$2], , :, [$2]) fi PACKAGE_VERSION_NANO=$NANO AC_SUBST(PACKAGE_VERSION_NANO) AC_SUBST(PACKAGE_VERSION_RELEASE) ]) ibus-anthy-1.5.17/po/000077500000000000000000000000001475510605700143205ustar00rootroot00000000000000ibus-anthy-1.5.17/po/.gitignore000066400000000000000000000002741475510605700163130ustar00rootroot00000000000000Makefile Makefile.in Makefile.in.in Makevars.template POTFILES Rules-quot boldquot.sed en@boldquot.header en@quot.header insert-header.sin quot.sed remove-potcdate.sed remove-potcdate.sin ibus-anthy-1.5.17/po/LINGUAS000066400000000000000000000001661475510605700153500ustar00rootroot00000000000000# please keep this list sorted alphabetically # ca cs de el es fi fr hu id ja ka kab ko pt_BR pt_PT si sv tr uk zh_CN ibus-anthy-1.5.17/po/Makevars000066400000000000000000000070321475510605700160160ustar00rootroot00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments --keyword=Name --keyword=Comment --keyword # 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 # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # 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 \ Takao Fujiwara # This tells whether or not to prepend "GNU " prefix to the package # name that gets inserted into the header of the $(DOMAIN).pot file. # Possible values are "yes", "no", or empty. If it is empty, try to # detect it automatically by scanning the files in $(top_srcdir) for # "GNU packagename" string. PACKAGE_GNU = no # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = https://github.com/ibus/ibus-anthy/issues # 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 = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = yes # These options get passed to msgmerge. # Useful options are in particular: # --previous to keep previous msgids of translated messages, # --quiet to reduce the verbosity. MSGMERGE_OPTIONS = # These options get passed to msginit. # If you want to disable line wrapping when writing PO files, add # --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and # MSGINIT_OPTIONS. MSGINIT_OPTIONS = # This tells whether or not to regenerate a PO file when $(DOMAIN).pot # has changed. Possible values are "yes" and "no". Set this to no if # the POT file is checked in the repository and the version control # program ignores timestamps. PO_DEPENDS_ON_POT = no # This tells whether or not to forcibly update $(DOMAIN).pot and # regenerate PO files on "make dist". Possible values are "yes" and # "no". Set this to no if the POT file and PO files are maintained # externally. DIST_DEPENDS_ON_UPDATE_PO = no ibus-anthy-1.5.17/po/POTFILES.in000066400000000000000000000010351475510605700160740ustar00rootroot00000000000000# Files with translatable strings. # Please keep this file in alphabetical order. data/ibus-anthy.appdata.xml.in engine/python2/default.inputMethod.xml.in.in engine/python2/engine.py engine/python2/factory.py engine/python3/default.inputMethod.xml.in.in engine/python3/engine.py engine/python3/factory.py setup/python2/anthyprefs.py setup/python2/ibus-setup-anthy.desktop.in.in setup/python2/main.py setup/python2/setup.ui setup/python3/anthyprefs.py setup/python3/ibus-setup-anthy.desktop.in.in setup/python3/main.py setup/python3/setup.ui ibus-anthy-1.5.17/po/POTFILES.skip000066400000000000000000000004421475510605700164350ustar00rootroot00000000000000# Files with translatable strings to skip. # Please keep this file in alphabetical order. engine/python2/default.xml.in engine/python3/default.xml.in setup/python2/anthyprefs.py setup/python2/ibus-setup-anthy.desktop.in setup/python3/anthyprefs.py setup/python3/ibus-setup-anthy.desktop.in ibus-anthy-1.5.17/po/ca.po000066400000000000000000000734121475510605700152520ustar00rootroot00000000000000# Catalan translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2019 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # Translators: # Robert Antoni Buj Gelonch , 2015. #zanata # Robert Antoni Buj Gelonch , 2016. #zanata # fujiwara , 2017. #zanata # fujiwara , 2019. #zanata # Antoni Bella Pérez , 2020. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2020-01-08 20:18+0000\n" "Last-Translator: Antoni Bella Pérez \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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.9.1\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Mètode d'entrada japonès" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" "El mètode d'entrada Anthy està dissenyat per a l'entrada de text en japonès." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Els mètodes d'entrada són sistemes mecanogràfics que permeten als usuaris " "l'entrada d'idiomes complexos. Són necessaris perquè aquests idiomes " "contenen massa caràcters per col·locar-los simplement en un teclat " "tradicional." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Mètode d'entrada Anthy" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "No es pot habilitar l'Anthy.\n" "El final del contingut del fitxer %s/last-record2_default.utf8 del vostre " "directori d'inici no és '\\n'. p. ex. format de text no correcte.\n" "Si us plau, corregiu el fitxer o elimineu-lo manualment i torneu a iniciar " "l'IBus." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Anthy - Preferències" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Configura Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Mode d'entrada" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Commuta el mode d'entrada" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana d'amplada mitjana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Llatí" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Llatí ampli" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "mètode mecanogràfic" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Commuta el mètode mecanogràfic" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Alternança amb el polze" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Mode de segment" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Commuta al mode de conversió" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segment múltiple" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segment individual" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Conversió immediata (segment múltiple)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Conversió immediata (segment individual)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Mode de diccionari" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Commuta el diccionari" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Anthy - Diccionari" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Dic" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Configura els diccionaris" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Edita els diccionaris" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Llança l'eina de diccionari" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Afegeix paraules" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Afegeix paraules al diccionari" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "General" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Conversió del codi postal" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Símbol" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Estil de caràcter antic" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "Ajust Anthy IBus" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Prepara el motor Anthy d'IBus" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Etiqueta de menú" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Ordre" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Drecera" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Descripció" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Incrustat" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Indv" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Caràcters d'entrada" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Caràcters de sortida" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Entrada" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Individual" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Esquerra" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Dreta" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Personalitza la taula de tecles romaji" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "Taula de tecles _romaji:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "Caràcters de _sortida" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Per defecte" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Personalitza la taula de tecles kana" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Taula de tecles _kana:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Disposició de teclat japonesa" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "Disposició de teclat dels EUA" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Personalitza la taula de tecles d'alternança amb el polze" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_Taula de tecles d'alternança amb el polze:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Caràcters de s_ortida individual" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "Extensió de tecles NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "Extensió de tecles NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "Extensió de tecles NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "Extensió de tecles FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "Extensió de tecles FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "Extensió de tecles FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "Extensió de tecles FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "Extensió de tecles FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "Extensió de tecles FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "El fitxer que heu triat ja ha estat afegit: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "El fitxer que heu triat no existeix: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "El fitxer que heu triat és un directori: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "No podeu afegir diccionaris al directori privat de l'anthy: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "El camí al vostre fitxer no és bo: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "El fitxer xml del motor no existeix: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "La disposició del teclat anthy ha canviat. Si us plau, reinicieu l'ibus per " "tornar a carregar la distribució." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Si us plau, especifiqueu els caràcters d'entrada" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Si us plau, especifiqueu els caràcters de sortida" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "" "Si us plau, especifiqueu els caràcters de taula de tecles d'alternança amb " "el polze esquerre" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "" "Si us plau, especifiqueu els caràcters de taula de tecles d'alternança amb " "el polze dret" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "La vostra tecla personalitzada no està assignada en cap secció. Potser és un " "error de programari." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "El vostre fitxer no existeix: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Obre el fitxer de diccionari" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Cancel·la" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Obre" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Edita el fitxer de diccionari" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "D'ac_ord" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "El fitxer que heu triat no és vàlid." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "No podeu eliminar el diccionari del sistema." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "El vostre fitxer no està bé." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Visualitza el fitxer de diccionari" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Premeu una tecla (o una combinació de tecles)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "El diàleg es tancarà quan es deixi anar la tecla" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "keysym no vàlid" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Aquest keysym no és vàlid" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Sense" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Extensió de tecles FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Extensió de tecles FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Manté els codis del teclat numèric" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Converteix els caràcters" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "No fer res" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Converteix automàticament" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Consignació automàtica" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Neteja" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Consigna" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Aguanta" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Ajust - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Mode d'entrada:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "Mètode d'_escriptura:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "_Mode de conversió:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Ajust inicial" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Visibilitat del menú en la icona d'estat" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Estil de _punt:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Esti_l de símbol:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Tipus de tecla del teclat _numèric:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Comportament sobre el punt:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Comportament sobre la pèrdua d'en_focament:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Comportament" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Mida de la pàgina de la _finestra dels candidats::" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Converteix els _símbols amb l'amplada d'una columna" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Converteix els _números amb l'amplada d'una columna" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Con_verteix els espais amb l'amplada d'una columna" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Commu_ta “Hiragana” i “Llatí” amb la tecla Maj. La tecla hiragana–katakana " "en la pre-edició" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Altres" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Conversió" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Tipu_s de drecera:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Per de_fecte" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Edita" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Vinculació de tecles" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Romaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Disposició de tec_lat:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Disposició de teclat" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Mètode mecanogràfic" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Tecla d'alternança amb el po_lze esquerre:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "_Tecla d'alternança amb el polze dret:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "Ajusta la d_isposició del mètode d'entrada amb la disposició del teclat del " "sistema" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Ajusta la disposició del mètode d'entrada amb la disposició de l'XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Disposició del _mètode d'entrada:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Torneu a iniciar l'IBus quan canvieu la disposició del teclat" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Torneu a iniciar l'IBus quan canvieu l'XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "Concertació de tecles addicionals:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "'~', '『', '¢', '£' i així successivament es poden emetre amb la tecla " "d'alternança amb el polze" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "No heu de tornar a configurar la disposició de teclat del sistema per a la " "\"Concertació de tecles addicionals\", ja que aquesta opció canvia la " "disposició del mètode d'entrada tan sols en el cas que el mètode d'entrada " "estigui engegat." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "No heu de tornar a configurar l'XKB, ja que aquesta opció canvia la " "disposició del mètode d'entrada tan sols amb el mètode d'entrada engegat." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "Habilita la marca del so quasi-sonor amb la t_ecla Maj." #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Maj. pot emetre handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Taula de tecle_s d'alternança amb el polze:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Disposició d'alternança amb el polze" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Alternança amb el polze" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "Ordre per _editar el diccionari:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Ordre per _afegir una paraula:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Configuració del diccionari per defecte" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Visualitza" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Afegeix" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Suprimeix" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "A_munt" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Podeu canviar l'ordre en la barra de l'idioma" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "A_vall" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Diccionaris estesos" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Diccionari" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Quant a" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Tanca" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Edita la drecera" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Codi de la tecla:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modificador:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lterna" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Majúscules" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Refresca" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Caràcters d'_entrada" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Caràcters de s_ortida" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Alternança amb el po_lze esquerre" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Alternança amb el polze d_ret" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "Sup_rimeix" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "Etiqueta breu:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Descripció:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Utilitza sols el diccionari amb la commutació de diccionaris" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "Integra _el vostre diccionari al diccionari del sistema" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Habilita la conversió inve_rsa" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "El motor Anthy per a la plataforma d'entrada IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Robert Antoni Buj i Gelonch " ibus-anthy-1.5.17/po/cs.po000066400000000000000000000706431475510605700152770ustar00rootroot00000000000000# Czech translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2018 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Zdenek , 2017. #zanata # Zdenek , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: ibus-anthy master\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2017-03-17 13:10+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-27 03:12-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" #: ../data/ibus-anthy.appdata.xml.in.h:1 msgid "Japanese input method" msgstr "" #: ../data/ibus-anthy.appdata.xml.in.h:2 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" #: ../data/ibus-anthy.appdata.xml.in.h:3 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" #: ../engine/python2/default.xml.in.in.h:1 #: ../engine/python3/default.xml.in.in.h:1 msgid "Anthy Input Method" msgstr "" #: ../engine/python2/engine.py:207 ../engine/python3/engine.py:208 msgid "" "Could not enable Anthy.\n" "The end of the content of the file .anthy/last-record2_default.utf8 in your " "home directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" #: ../engine/python2/engine.py:255 ../engine/python3/engine.py:256 #: ../setup/python2/main.py:416 ../setup/python3/main.py:421 msgid "Preferences - Anthy" msgstr "" #: ../engine/python2/engine.py:257 ../engine/python3/engine.py:258 msgid "Configure Anthy" msgstr "" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: ../engine/python2/engine.py:294 ../engine/python2/engine.py:382 #: ../engine/python2/engine.py:449 ../engine/python2/engine.py:525 #: ../engine/python2/engine.py:856 ../engine/python2/engine.py:884 #: ../engine/python2/engine.py:908 ../engine/python2/engine.py:934 #: ../engine/python2/engine.py:996 ../engine/python3/engine.py:295 #: ../engine/python3/engine.py:383 ../engine/python3/engine.py:450 #: ../engine/python3/engine.py:526 ../engine/python3/engine.py:851 #: ../engine/python3/engine.py:879 ../engine/python3/engine.py:903 #: ../engine/python3/engine.py:929 ../engine/python3/engine.py:991 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "" #: ../engine/python2/engine.py:295 ../engine/python2/engine.py:857 #: ../engine/python3/engine.py:296 ../engine/python3/engine.py:852 #: ../setup/python2/main.py:401 ../setup/python3/main.py:406 msgid "Input mode" msgstr "" #: ../engine/python2/engine.py:301 ../engine/python3/engine.py:302 msgid "Switch input mode" msgstr "" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../engine/python2/engine.py:311 ../engine/python3/engine.py:312 #: ../setup/python2/setup.ui.h:1 ../setup/python3/setup.ui.h:1 msgid "Hiragana" msgstr "Hiragana" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../engine/python2/engine.py:320 ../engine/python3/engine.py:321 #: ../setup/python2/setup.ui.h:2 ../setup/python3/setup.ui.h:2 msgid "Katakana" msgstr "Katakana" #: ../engine/python2/engine.py:329 ../engine/python3/engine.py:330 #: ../setup/python2/setup.ui.h:3 ../setup/python3/setup.ui.h:3 msgid "Halfwidth Katakana" msgstr "" #: ../engine/python2/engine.py:338 ../engine/python3/engine.py:339 #: ../setup/python2/setup.ui.h:4 ../setup/python3/setup.ui.h:4 msgid "Latin" msgstr "" #: ../engine/python2/engine.py:347 ../engine/python3/engine.py:348 #: ../setup/python2/setup.ui.h:5 ../setup/python3/setup.ui.h:5 msgid "Wide Latin" msgstr "" #: ../engine/python2/engine.py:383 ../engine/python2/engine.py:885 #: ../engine/python2/engine.py:909 ../engine/python3/engine.py:384 #: ../engine/python3/engine.py:880 ../engine/python3/engine.py:904 #: ../setup/python2/main.py:404 ../setup/python3/main.py:409 msgid "Typing method" msgstr "" #: ../engine/python2/engine.py:389 ../engine/python3/engine.py:390 msgid "Switch typing method" msgstr "" #: ../engine/python2/engine.py:399 ../engine/python3/engine.py:400 #: ../setup/python2/setup.ui.h:12 ../setup/python3/setup.ui.h:12 msgid "Romaji" msgstr "" #: ../engine/python2/engine.py:408 ../engine/python3/engine.py:409 #: ../setup/python2/setup.ui.h:13 ../setup/python3/setup.ui.h:13 msgid "Kana" msgstr "" #: ../engine/python2/engine.py:417 ../engine/python3/engine.py:418 #: ../setup/python2/setup.ui.h:14 ../setup/python3/setup.ui.h:14 msgid "Thumb shift" msgstr "" #: ../engine/python2/engine.py:450 ../engine/python2/engine.py:935 #: ../engine/python3/engine.py:451 ../engine/python3/engine.py:930 #: ../setup/python2/main.py:407 ../setup/python3/main.py:412 msgid "Segment mode" msgstr "" #: ../engine/python2/engine.py:456 ../engine/python3/engine.py:457 msgid "Switch conversion mode" msgstr "" #: ../engine/python2/engine.py:466 ../engine/python3/engine.py:467 #: ../setup/python2/setup.ui.h:15 ../setup/python3/setup.ui.h:15 msgid "Multiple segment" msgstr "" #: ../engine/python2/engine.py:475 ../engine/python3/engine.py:476 #: ../setup/python2/setup.ui.h:16 ../setup/python3/setup.ui.h:16 msgid "Single segment" msgstr "" #: ../engine/python2/engine.py:484 ../engine/python3/engine.py:485 #: ../setup/python2/setup.ui.h:17 ../setup/python3/setup.ui.h:17 msgid "Immediate conversion (multiple segment)" msgstr "" #: ../engine/python2/engine.py:493 ../engine/python3/engine.py:494 #: ../setup/python2/setup.ui.h:18 ../setup/python3/setup.ui.h:18 msgid "Immediate conversion (single segment)" msgstr "" #: ../engine/python2/engine.py:526 ../engine/python2/engine.py:997 #: ../engine/python3/engine.py:527 ../engine/python3/engine.py:992 #: ../setup/python2/main.py:410 ../setup/python3/main.py:415 msgid "Dictionary mode" msgstr "" #: ../engine/python2/engine.py:532 ../engine/python3/engine.py:533 msgid "Switch dictionary" msgstr "" #: ../engine/python2/engine.py:615 ../engine/python3/engine.py:615 #: ../setup/python2/main.py:413 ../setup/python3/main.py:418 msgid "Dictionary - Anthy" msgstr "" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: ../engine/python2/engine.py:621 ../engine/python3/engine.py:620 msgid "Dic" msgstr "" #: ../engine/python2/engine.py:628 ../engine/python3/engine.py:627 msgid "Configure dictionaries" msgstr "" #: ../engine/python2/engine.py:638 ../engine/python3/engine.py:637 msgid "Edit dictionaries" msgstr "" #: ../engine/python2/engine.py:640 ../engine/python3/engine.py:639 msgid "Launch the dictionary tool" msgstr "" #: ../engine/python2/engine.py:647 ../engine/python3/engine.py:646 msgid "Add words" msgstr "" #: ../engine/python2/engine.py:649 ../engine/python3/engine.py:648 msgid "Add words to the dictionary" msgstr "" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: ../setup/python2/anthyprefs.py.in:1105 ../setup/python2/setup.ui.h:36 #: ../setup/python3/anthyprefs.py.in:1098 ../setup/python3/setup.ui.h:36 msgid "General" msgstr "Obecné" #: ../setup/python2/anthyprefs.py.in:1116 #: ../setup/python3/anthyprefs.py.in:1109 msgid "Zip Code Conversion" msgstr "" #: ../setup/python2/anthyprefs.py.in:1127 #: ../setup/python3/anthyprefs.py.in:1120 msgid "Symbol" msgstr "" #: ../setup/python2/anthyprefs.py.in:1138 #: ../setup/python3/anthyprefs.py.in:1131 msgid "Old Character Style" msgstr "" #: ../setup/python2/anthyprefs.py.in:1148 #: ../setup/python3/anthyprefs.py.in:1141 msgid "Era" msgstr "" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/anthyprefs.py.in:1158 #: ../setup/python3/anthyprefs.py.in:1151 msgid "Emoji" msgstr "Emoji" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:1 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:1 msgid "IBus Anthy Setup" msgstr "" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:2 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:2 msgid "Set up IBus Anthy engine" msgstr "" #. self.__run_message_dialog needs self.__builder. #: ../setup/python2/main.py:133 ../setup/python3/main.py:136 msgid "ibus is not running." msgstr "" #: ../setup/python2/main.py:188 ../setup/python3/main.py:191 msgid "Menu label" msgstr "" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: ../setup/python2/main.py:207 ../setup/python3/main.py:210 msgid "Command" msgstr "Příkaz" # auto translated by TM merge from project: Fedora Installation Guide, version: f22, DocId: pot/Installing_Using_Anaconda #: ../setup/python2/main.py:211 ../setup/python3/main.py:214 msgid "Shortcut" msgstr "Zkratka" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: ../setup/python2/main.py:256 ../setup/python3/main.py:259 msgid "Description" msgstr "Popis" #. Translators: "Embd" is an abbreviation of "embedded". #: ../setup/python2/main.py:264 ../setup/python3/main.py:267 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: ../setup/python2/main.py:272 ../setup/python3/main.py:275 msgid "Sgl" msgstr "" #: ../setup/python2/main.py:447 ../setup/python2/main.py:483 #: ../setup/python3/main.py:452 ../setup/python3/main.py:488 msgid "Input Chars" msgstr "" #: ../setup/python2/main.py:449 ../setup/python2/main.py:485 #: ../setup/python3/main.py:454 ../setup/python3/main.py:490 msgid "Output Chars" msgstr "" # auto translated by TM merge from project: Pulseaudio, version: 6.0, DocId: pulseaudio.pot #: ../setup/python2/main.py:531 ../setup/python3/main.py:536 msgid "Input" msgstr "Vstup" # auto translated by TM merge from project: anaconda, version: f25, DocId: main #: ../setup/python2/main.py:533 ../setup/python3/main.py:538 msgid "Single" msgstr "Jediný disk" #: ../setup/python2/main.py:535 ../setup/python3/main.py:540 msgid "Left" msgstr "" #: ../setup/python2/main.py:537 ../setup/python3/main.py:542 msgid "Right" msgstr "" #: ../setup/python2/main.py:619 ../setup/python3/main.py:624 msgid "Customize Romaji Key Table" msgstr "" #: ../setup/python2/main.py:620 ../setup/python2/setup.ui.h:54 #: ../setup/python3/main.py:625 ../setup/python3/setup.ui.h:54 msgid "_Romaji Key Table:" msgstr "" #: ../setup/python2/main.py:621 ../setup/python2/main.py:627 #: ../setup/python3/main.py:626 ../setup/python3/main.py:632 msgid "_Output Chars" msgstr "" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: ../setup/python2/main.py:622 ../setup/python2/main.py:1122 #: ../setup/python2/main.py:1270 ../setup/python2/setup.ui.h:27 #: ../setup/python3/main.py:627 ../setup/python3/main.py:1116 #: ../setup/python3/main.py:1264 ../setup/python3/setup.ui.h:27 msgid "Default" msgstr "Výchozí" #: ../setup/python2/main.py:625 ../setup/python3/main.py:630 msgid "Customize Kana Key Table" msgstr "" #: ../setup/python2/main.py:626 ../setup/python2/setup.ui.h:56 #: ../setup/python3/main.py:631 ../setup/python3/setup.ui.h:56 msgid "_Kana Key Table:" msgstr "" #: ../setup/python2/main.py:628 ../setup/python3/main.py:633 msgid "Japanese Keyboard Layout" msgstr "" #: ../setup/python2/main.py:629 ../setup/python3/main.py:634 msgid "U.S. Keyboard Layout" msgstr "" #: ../setup/python2/main.py:632 ../setup/python3/main.py:637 msgid "Customize Thumb Shift Key Table" msgstr "" #: ../setup/python2/main.py:633 ../setup/python3/main.py:638 msgid "_Thumb Shift Key Table:" msgstr "" #: ../setup/python2/main.py:634 ../setup/python3/main.py:639 msgid "Single _Output Chars" msgstr "" # auto translated by TM merge from project: comps, version: master, DocId: po/comps #: ../setup/python2/main.py:635 ../setup/python3/main.py:640 msgid "Base" msgstr "Základ" #: ../setup/python2/main.py:636 ../setup/python3/main.py:641 msgid "NICOLA-J key extension" msgstr "" #: ../setup/python2/main.py:637 ../setup/python3/main.py:642 msgid "NICOLA-A key extension" msgstr "" #: ../setup/python2/main.py:638 ../setup/python3/main.py:643 msgid "NICOLA-F key extension" msgstr "" #: ../setup/python2/main.py:639 ../setup/python3/main.py:644 msgid "FMV KB231-J key extension" msgstr "" #: ../setup/python2/main.py:640 ../setup/python3/main.py:645 msgid "FMV KB231-A key extension" msgstr "" #: ../setup/python2/main.py:641 ../setup/python3/main.py:646 msgid "FMV KB231-F key extension" msgstr "" #: ../setup/python2/main.py:642 ../setup/python3/main.py:647 msgid "FMV KB611-J key extension" msgstr "" #: ../setup/python2/main.py:643 ../setup/python3/main.py:648 msgid "FMV KB611-A key extension" msgstr "" #: ../setup/python2/main.py:644 ../setup/python3/main.py:649 msgid "FMV KB611-F key extension" msgstr "" #: ../setup/python2/main.py:788 ../setup/python3/main.py:793 msgid "Your choosed file has already been added: " msgstr "" #: ../setup/python2/main.py:792 ../setup/python3/main.py:797 msgid "The file you have chosen does not exist: " msgstr "" #: ../setup/python2/main.py:796 ../setup/python3/main.py:801 msgid "Your choosed file is a directory: " msgstr "" #: ../setup/python2/main.py:800 ../setup/python3/main.py:805 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" #: ../setup/python2/main.py:807 ../setup/python3/main.py:812 msgid "Your file path is not good: " msgstr "" #: ../setup/python2/main.py:986 ../setup/python3/main.py:989 msgid "The engine xml file does not exist: " msgstr "" #: ../setup/python2/main.py:1102 ../setup/python3/main.py:1096 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: ../setup/python2/main.py:1231 ../setup/python3/main.py:1225 msgid "Confirmation" msgstr "" #: ../setup/python2/main.py:1233 ../setup/python3/main.py:1227 msgid "You are about to close the setup dialog, is that OK?" msgstr "" #: ../setup/python2/main.py:1248 ../setup/python3/main.py:1242 msgid "Notice!" msgstr "" #: ../setup/python2/main.py:1250 ../setup/python3/main.py:1244 msgid "" "You are about to close the setup dialog without saving your changes, is that " "OK?" msgstr "" #: ../setup/python2/main.py:1371 ../setup/python3/main.py:1365 msgid "Please specify Input Chars" msgstr "" #: ../setup/python2/main.py:1374 ../setup/python3/main.py:1368 msgid "Please specify Output Chars" msgstr "" #: ../setup/python2/main.py:1377 ../setup/python3/main.py:1371 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: ../setup/python2/main.py:1380 ../setup/python3/main.py:1374 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: ../setup/python2/main.py:1393 ../setup/python2/main.py:1437 #: ../setup/python3/main.py:1387 ../setup/python3/main.py:1431 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: ../setup/python2/main.py:1503 ../setup/python2/main.py:1590 #: ../setup/python3/main.py:1497 ../setup/python3/main.py:1584 msgid "Your file does not exist: " msgstr "" #: ../setup/python2/main.py:1513 ../setup/python3/main.py:1507 msgid "Open Dictionary File" msgstr "" # auto translated by TM merge from project: blivet-gui, version: master, DocId: po/blivet-gui #: ../setup/python2/main.py:1516 ../setup/python2/main.py:1522 #: ../setup/python2/setup.ui.h:90 ../setup/python3/main.py:1510 #: ../setup/python3/main.py:1516 ../setup/python3/setup.ui.h:90 msgid "_Cancel" msgstr "_Ukončit" # auto translated by TM merge from project: virt-manager, version: master, DocId: virt-manager #: ../setup/python2/main.py:1517 ../setup/python3/main.py:1511 msgid "_Open" msgstr "_Otevřít" #: ../setup/python2/main.py:1520 ../setup/python3/main.py:1514 msgid "Edit Dictionary File" msgstr "" # auto translated by TM merge from project: virt-viewer, version: master, DocId: virt-viewer #: ../setup/python2/main.py:1523 ../setup/python2/main.py:1618 #: ../setup/python2/setup.ui.h:91 ../setup/python3/main.py:1517 #: ../setup/python3/main.py:1612 ../setup/python3/setup.ui.h:91 msgid "_OK" msgstr "_OK" #: ../setup/python2/main.py:1534 ../setup/python3/main.py:1528 msgid "Your choosed file is not correct." msgstr "" #: ../setup/python2/main.py:1563 ../setup/python3/main.py:1557 msgid "You cannot delete the system dictionary." msgstr "" #: ../setup/python2/main.py:1586 ../setup/python3/main.py:1580 msgid "Your file is not good." msgstr "" #: ../setup/python2/main.py:1616 ../setup/python3/main.py:1610 msgid "View Dictionary File" msgstr "" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/main.py:1787 ../setup/python3/main.py:1781 msgid "Please press a key (or a key combination)" msgstr "Stiskněte prosím klávesu (či kombinaci kláves)." #: ../setup/python2/main.py:1788 ../setup/python3/main.py:1782 msgid "The dialog will be closed when the key is released" msgstr "" #: ../setup/python2/main.py:1808 ../setup/python2/main.py:1829 #: ../setup/python3/main.py:1802 ../setup/python3/main.py:1823 msgid "Invalid keysym" msgstr "" #: ../setup/python2/main.py:1809 ../setup/python2/main.py:1830 #: ../setup/python3/main.py:1803 ../setup/python3/main.py:1824 msgid "This keysym is not valid" msgstr "" #: ../setup/python2/setup.ui.h:6 ../setup/python3/setup.ui.h:6 msgid "NICOLA-J" msgstr "" #: ../setup/python2/setup.ui.h:7 ../setup/python3/setup.ui.h:7 msgid "NICOLA-A" msgstr "" #: ../setup/python2/setup.ui.h:8 ../setup/python3/setup.ui.h:8 msgid "NICOLA-F" msgstr "" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/setup.ui.h:9 ../setup/python3/setup.ui.h:9 msgid "None" msgstr "Žádný" #: ../setup/python2/setup.ui.h:10 ../setup/python3/setup.ui.h:10 msgid "FMV KB231 key extension" msgstr "" #: ../setup/python2/setup.ui.h:11 ../setup/python3/setup.ui.h:11 msgid "FMV KB611 key extension" msgstr "" #: ../setup/python2/setup.ui.h:19 ../setup/python3/setup.ui.h:19 msgid "Keep numpad codes" msgstr "" #: ../setup/python2/setup.ui.h:20 ../setup/python3/setup.ui.h:20 msgid "Convert characters" msgstr "" #: ../setup/python2/setup.ui.h:21 ../setup/python3/setup.ui.h:21 msgid "Do nothing" msgstr "" #: ../setup/python2/setup.ui.h:22 ../setup/python3/setup.ui.h:22 msgid "Automatically convert" msgstr "" #: ../setup/python2/setup.ui.h:23 ../setup/python3/setup.ui.h:23 msgid "Automatically commit" msgstr "" # auto translated by TM merge from project: FreeIPA, version: ipa-4-5, DocId: po/ipa #: ../setup/python2/setup.ui.h:24 ../setup/python3/setup.ui.h:24 msgid "Clear" msgstr "Vymazat" #: ../setup/python2/setup.ui.h:25 ../setup/python3/setup.ui.h:25 msgid "Commit" msgstr "" #: ../setup/python2/setup.ui.h:26 ../setup/python3/setup.ui.h:26 msgid "Hold" msgstr "" #: ../setup/python2/setup.ui.h:28 ../setup/python3/setup.ui.h:28 msgid "ATOK" msgstr "" #: ../setup/python2/setup.ui.h:29 ../setup/python3/setup.ui.h:29 msgid "Wnn" msgstr "" #: ../setup/python2/setup.ui.h:30 ../setup/python3/setup.ui.h:30 msgid "Setup - IBus-Anthy" msgstr "" #: ../setup/python2/setup.ui.h:31 ../setup/python3/setup.ui.h:31 msgid "_Input Mode:" msgstr "" #: ../setup/python2/setup.ui.h:32 ../setup/python3/setup.ui.h:32 msgid "_Typing Method:" msgstr "" #: ../setup/python2/setup.ui.h:33 ../setup/python3/setup.ui.h:33 msgid "Conversion _Mode:" msgstr "" #: ../setup/python2/setup.ui.h:34 ../setup/python3/setup.ui.h:34 msgid "Initial Setting" msgstr "" #: ../setup/python2/setup.ui.h:35 ../setup/python3/setup.ui.h:35 msgid "Menu Visibility on Status Icon" msgstr "" #: ../setup/python2/setup.ui.h:37 ../setup/python3/setup.ui.h:37 msgid "_Period Style:" msgstr "" #: ../setup/python2/setup.ui.h:38 ../setup/python3/setup.ui.h:38 msgid "Symbo_l Style:" msgstr "" #: ../setup/python2/setup.ui.h:39 ../setup/python3/setup.ui.h:39 msgid "Numpad _Key Type:" msgstr "" #: ../setup/python2/setup.ui.h:40 ../setup/python3/setup.ui.h:40 msgid "_Behavior on Period:" msgstr "" #: ../setup/python2/setup.ui.h:41 ../setup/python3/setup.ui.h:41 msgid "Behavior on _Focus Out:" msgstr "" #: ../setup/python2/setup.ui.h:42 ../setup/python3/setup.ui.h:42 msgid "Behavior" msgstr "" #: ../setup/python2/setup.ui.h:43 ../setup/python3/setup.ui.h:43 msgid "Candidate _Window Page Size:" msgstr "" #: ../setup/python2/setup.ui.h:44 ../setup/python3/setup.ui.h:44 msgid "Convert _symbols with the one column width" msgstr "" #: ../setup/python2/setup.ui.h:45 ../setup/python3/setup.ui.h:45 msgid "Convert _numbers with the one column width" msgstr "" #: ../setup/python2/setup.ui.h:46 ../setup/python3/setup.ui.h:46 msgid "Con_vert spaces with the one column width" msgstr "" #: ../setup/python2/setup.ui.h:47 ../setup/python3/setup.ui.h:47 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" # auto translated by TM merge from project: ibus-libpinyin, version: master, DocId: ibus-libpinyin #: ../setup/python2/setup.ui.h:48 ../setup/python3/setup.ui.h:48 msgid "Other" msgstr "Jiné" #: ../setup/python2/setup.ui.h:49 ../setup/python3/setup.ui.h:49 msgid "Conversion" msgstr "" #: ../setup/python2/setup.ui.h:50 ../setup/python3/setup.ui.h:50 msgid "_Shortcut Type:" msgstr "" #: ../setup/python2/setup.ui.h:51 ../setup/python3/setup.ui.h:51 msgid "De_fault" msgstr "" # auto translated by TM merge from project: ibus-libpinyin, version: master, DocId: ibus-libpinyin #: ../setup/python2/setup.ui.h:52 ../setup/python3/setup.ui.h:52 msgid "_Edit" msgstr "_Upravit" #: ../setup/python2/setup.ui.h:53 ../setup/python3/setup.ui.h:53 msgid "Key Binding" msgstr "" #: ../setup/python2/setup.ui.h:55 ../setup/python3/setup.ui.h:55 msgid "Romaji" msgstr "" #: ../setup/python2/setup.ui.h:57 ../setup/python3/setup.ui.h:57 msgid "Kana" msgstr "" #: ../setup/python2/setup.ui.h:58 ../setup/python3/setup.ui.h:58 msgid "Keyboad _layout:" msgstr "" #: ../setup/python2/setup.ui.h:59 ../setup/python3/setup.ui.h:59 msgid "Keyboard layout" msgstr "" #: ../setup/python2/setup.ui.h:60 ../setup/python3/setup.ui.h:60 msgid "Typing Method" msgstr "" #: ../setup/python2/setup.ui.h:61 ../setup/python3/setup.ui.h:61 msgid "_Left Thumb Shift Key:" msgstr "" #: ../setup/python2/setup.ui.h:62 ../setup/python3/setup.ui.h:62 msgid "Right _Thumb Shift Key:" msgstr "" #: ../setup/python2/setup.ui.h:63 ../setup/python3/setup.ui.h:63 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: ../setup/python2/setup.ui.h:64 ../setup/python3/setup.ui.h:64 msgid "Adjust IM layout to XKB layout" msgstr "" #: ../setup/python2/setup.ui.h:65 ../setup/python3/setup.ui.h:65 msgid "Input _Method Layout:" msgstr "" #: ../setup/python2/setup.ui.h:66 ../setup/python3/setup.ui.h:66 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: ../setup/python2/setup.ui.h:67 ../setup/python3/setup.ui.h:67 msgid "Restart IBus when you change XKB" msgstr "" #: ../setup/python2/setup.ui.h:68 ../setup/python3/setup.ui.h:68 msgid "_Additional Key Arrangement:" msgstr "" #: ../setup/python2/setup.ui.h:69 ../setup/python3/setup.ui.h:69 msgid "" "'~', '『', '¢', '£' and so on can be output with " "Thumb Shift key" msgstr "" #: ../setup/python2/setup.ui.h:70 ../setup/python3/setup.ui.h:70 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: ../setup/python2/setup.ui.h:71 ../setup/python3/setup.ui.h:71 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: ../setup/python2/setup.ui.h:72 ../setup/python3/setup.ui.h:72 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: ../setup/python2/setup.ui.h:73 ../setup/python3/setup.ui.h:73 msgid "Seion + Shift can output Handakuon" msgstr "" #: ../setup/python2/setup.ui.h:74 ../setup/python3/setup.ui.h:74 msgid "Thumb _Shift Key Table:" msgstr "" #: ../setup/python2/setup.ui.h:75 ../setup/python3/setup.ui.h:75 msgid "Thumb Shift Layout" msgstr "" #: ../setup/python2/setup.ui.h:76 ../setup/python3/setup.ui.h:76 msgid "Thumb Shift" msgstr "" #: ../setup/python2/setup.ui.h:77 ../setup/python3/setup.ui.h:77 msgid "_Edit Dictionary Command:" msgstr "" #: ../setup/python2/setup.ui.h:78 ../setup/python3/setup.ui.h:78 msgid "_Add Word Command:" msgstr "" #: ../setup/python2/setup.ui.h:79 ../setup/python3/setup.ui.h:79 msgid "Default Dictionary Configuration" msgstr "" # auto translated by TM merge from project: virt-viewer, version: master, DocId: virt-viewer #: ../setup/python2/setup.ui.h:80 ../setup/python3/setup.ui.h:80 msgid "_View" msgstr "_Zobrazit" # auto translated by TM merge from project: system-config-printer, version: master, DocId: system-config-printer #: ../setup/python2/setup.ui.h:81 ../setup/python3/setup.ui.h:81 msgid "_Add" msgstr "Př_idat" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/setup.ui.h:82 ../setup/python3/setup.ui.h:82 msgid "_Delete" msgstr "O_dstranit" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/setup.ui.h:83 ../setup/python3/setup.ui.h:83 msgid "_Up" msgstr "_Výše" #: ../setup/python2/setup.ui.h:84 ../setup/python3/setup.ui.h:84 msgid "You can change the order on language bar" msgstr "" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/setup.ui.h:85 ../setup/python3/setup.ui.h:85 msgid "_Down" msgstr "_Níže" #: ../setup/python2/setup.ui.h:86 ../setup/python3/setup.ui.h:86 msgid "Extended Dictionaries" msgstr "" # auto translated by TM merge from project: ibus-libpinyin, version: master, DocId: ibus-libpinyin #: ../setup/python2/setup.ui.h:87 ../setup/python3/setup.ui.h:87 msgid "Dictionary" msgstr "Slovník" #: ../setup/python2/setup.ui.h:88 ../setup/python3/setup.ui.h:88 msgid "About" msgstr "" # auto translated by TM merge from project: system-config-printer, version: master, DocId: system-config-printer #: ../setup/python2/setup.ui.h:89 ../setup/python3/setup.ui.h:89 msgid "_Apply" msgstr "_Použít" #: ../setup/python2/setup.ui.h:92 ../setup/python3/setup.ui.h:92 msgid "Edit Shortcut" msgstr "" #: ../setup/python2/setup.ui.h:93 ../setup/python3/setup.ui.h:93 msgid "Key Code:" msgstr "" #: ../setup/python2/setup.ui.h:94 ../setup/python3/setup.ui.h:94 msgid "Modifier:" msgstr "" #: ../setup/python2/setup.ui.h:95 ../setup/python3/setup.ui.h:95 msgid "A_lternate" msgstr "" #: ../setup/python2/setup.ui.h:96 ../setup/python3/setup.ui.h:96 msgid "Co_ntrol" msgstr "" #: ../setup/python2/setup.ui.h:97 ../setup/python3/setup.ui.h:97 msgid "_Shift" msgstr "" # auto translated by TM merge from project: system-config-printer, version: master, DocId: system-config-printer #: ../setup/python2/setup.ui.h:98 ../setup/python3/setup.ui.h:98 msgid "_Refresh" msgstr "_Obnovit" #: ../setup/python2/setup.ui.h:99 ../setup/python3/setup.ui.h:99 msgid "_Input Characters" msgstr "" #: ../setup/python2/setup.ui.h:100 ../setup/python3/setup.ui.h:100 msgid "_Output Characters" msgstr "" #: ../setup/python2/setup.ui.h:101 ../setup/python3/setup.ui.h:101 msgid "_Left Thumb Shift" msgstr "" #: ../setup/python2/setup.ui.h:102 ../setup/python3/setup.ui.h:102 msgid "_Right Thumb Shift" msgstr "" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: ../setup/python2/setup.ui.h:103 ../setup/python3/setup.ui.h:103 msgid "_Remove" msgstr "_Odebrat" # auto translated by TM merge from project: virt-viewer, version: master, DocId: virt-viewer #: ../setup/python2/setup.ui.h:104 ../setup/python3/setup.ui.h:104 msgid "_Close" msgstr "Z_avřít" #: ../setup/python2/setup.ui.h:105 ../setup/python3/setup.ui.h:105 msgid "_Short Label:" msgstr "" #: ../setup/python2/setup.ui.h:106 ../setup/python3/setup.ui.h:106 msgid "_Description:" msgstr "" #: ../setup/python2/setup.ui.h:107 ../setup/python3/setup.ui.h:107 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: ../setup/python2/setup.ui.h:108 ../setup/python3/setup.ui.h:108 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: ../setup/python2/setup.ui.h:109 ../setup/python3/setup.ui.h:109 msgid "Enable the _reverse conversion" msgstr "" #: ../setup/python2/setup.ui.h:110 ../setup/python3/setup.ui.h:110 msgid "The Anthy engine for the IBus input platform" msgstr "" # auto translated by TM merge from project: ibus-input-pad, version: head, DocId: ibus-input-pad #: ../setup/python2/setup.ui.h:111 ../setup/python3/setup.ui.h:111 msgid "translator_credits" msgstr "zásluha překladatelů" ibus-anthy-1.5.17/po/de.po000066400000000000000000000717651475510605700152700ustar00rootroot00000000000000# German translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2020 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Mike FABIAN , 2020. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2020-09-04 20:29+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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.2.2\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Japanische Inputmethode" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Die Anthy Inputmethode ist designed um japanischen Text einzugeben." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Inputmethoden are Eingabesysteme die es erlauben komplexe Sprachen " "einzugeben. Sie sind notwendig weil diese Sprachen zu viele Zeichen haben, " "so dass sie nicht auf eine gewöhnliche Tastaturbelegung passen." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Anthy Inputmethode" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Konnte Anthy nicht aktivieren.\n" "Das Ende des Inhalts der Datei %s/last-record2_default.utf8 im Home-" "Directory ist nicht '\\n" "'. D.h. das Textformat der Datei ist nicht korrekt.\n" "Repariere die Datei oder lösche sie manuell und starte IBus neu." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Einstellungen - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Anthy konfigurieren" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Inputmodus" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Inputmodus wechseln" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Halbbreite Katakana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Lateinalphabet" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Vollbreites Lateinalphabet" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Methode des Tippens" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Tippmethode wechseln" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Rōmaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Daumen-Shift" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Segmentmodus" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Konvertierungsmodus wechseln" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Mehrere Segmente" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Einzelnes Segment" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Sofortige Konvertierung (mehrere Segmente)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Sofortige Konvertierung (einzelnes Segment)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Wörterbuchmodus" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Wörterbuch wechseln" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Wörterbuch - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Wörterb." #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Wörterbücher konfigurieren" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Wörterbücher editieren" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Wörterbuchwerkzeug starten" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Wörter hinzufügen" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Wörter zum Wörterbuch hinzufügen" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Allgemein" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Postleitzahl Konvertierung" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Symbol" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Alte Zeichenformen" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Nengō" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "IBus Anthy Einstellungen" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "IBus Anthy Engine konfigurieren" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Menü-Label" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Kommando" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Tastaturkürzel" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Beschreibung" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Eingebettet" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Einzeln" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Eingabezeichen" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Ausgabezeichen" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Eingabe" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Einzeln" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Links" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Rechts" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Rōmaji Tastentabelle individuell anpassen" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "_Rōmaji Tastentabelle:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "_Ausgabezeichen" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Voreinstellung" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Kana Tastentabelle individualisieren" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "_Kana Tastetabelle:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Japanische Tastaturbelegung" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "US amerikanische Tastaturbelegung" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Daumen-Shift Tastentabelle individualisieren" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_Daumen-Shift Tastentabelle:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Einzelne _Ausgabezeichen" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Basis" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "NICOLA-J Tastenerweiterung" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "NICOLA-A Tastenerweiterung" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "NICOLA-F Tastenerweiterung" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J Tastenerweiterung" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A Tastenerweiterung" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F Tastenerweiterung" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J Tastenerweiterung" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A Tastenerweiterung" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F Tastenerweiterung" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "Die gewählte Datei wurde bereits hinzugefügt: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "Die gewählte Datei existiert nicht: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "Die gewählte Datei ist ein Directory: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" "Wörterbücher können nicht im privaten anthy Directory hinzugefügt werden: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "Der Pfad der Datei ist nicht gut: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "Die xml Enginedatei existiert nicht: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Die Anthy Tastaturbelegung wurde geändert. Bitte ibus neustarten um die " "Tastaturbelegung neu zu laden." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Bitte Eingabezeichen spezifizieren" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Bitte Ausgabezeichen spezifizieren" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "Bitte linke Daumen-Shift Zeichen spezifizieren" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "Bitte rechte Daumen-Shift Zeichen spezifizieren" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Die individualisierte Taste ist in keiner Sektion definiert. Vielleicht ist " "das ein Bug." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "Die Datei existiert nicht: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Wörterbuchdatei öffnen" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Abbrechen" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Öffnen" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Wörterbuchdatei editieren" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_OK" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "Die gewählte Datei ist nicht korrekt." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "Das Systemwörterbuch kann nicht gelöscht werden." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "Die Datei ist nicht gut." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Wörterbuchdatei ansehen" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Bitte eine Taste (oder eine Tastenkombination drücken)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "Der Dialog wird geschlossen wenn die Taste losgelassen wird" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "Ungültiges Tastensymbol" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Dieses Tastensymbol ist nicht gültig" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Keine" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 Tastenerweiterung" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 Tastenerweiterung" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Ziffernblock Codes behalten" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Zeichen konvertieren" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Nichts machen" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Automatisch konvertieren" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Automatisch committen" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Löschen" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Committen" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Behalten" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Konfiguration - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Eingabemodus:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Tippmethode:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Konvertierungs_modus:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Initiale Einstellung" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Menü Sichtbarkeit auf dem Status Icon" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_Interpunktionsstil:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Symbo_l Stil:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Ziffernblock _Tastenverhalten:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Verhalten bei Punkt:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Verhalten bei Fokusverlust:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Verhalten" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Anzahl der _Vorschläge pro Seite:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Konvertiere _Symbole mit halber Breite" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Konvertiere _Ziffern mit halber Breite" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Kon_vertiere Leerzeichen mit halber Breite" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "_Wechseln zwischen „Hiragana“ und „Lateinalphabet“ im Preedit mit der Shift-" "Taste und der Hiragana-Katakana-Taste" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Sonstiges" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Konvertierung" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Ta_staturkürzelschema:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_Voreinstellung" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Editieren" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Tastaturkürzel" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Rōmaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Tastaturbe_legung:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Tastaturbelegung" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Tippmethode" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_Linke Daumen-Shift Taste:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Rechte _Daumen-Shift Taste:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Inputmethoden-Tastaturbelegung an System-Tastaturbelegung anpassen" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Inputmethoden Tastaturbelegung an XKB Tastaturbelegung anpassen" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Input_methoden Tastaturbelegung:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "IBus neustarten when die Tastaturbelegung geändert wurde" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "IBus neustarten wenn XKB geändert wurde" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Zusätzliche Tastenanordnung:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "'~', '『', '¢', '£' und so weiter können mit Daumen-Shift-Taste ausgegeben " "werden" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Die Systemtastaturbelegung muß nicht neu konfiguriert werden für die " "Benutzung der „Zusätzliche Tastenanordnung“-Option weil diese Option die " "Tastaturbelegung nur ändert während die Inputmethode eingeschaltet ist." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "XKB muss nicht neu konfiguriert werden weil diese Option die Tastenbelegung " "der Inputmethode nur ändert wenn die Inputmethode eingeschaltet ist." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Handakuten mit Shifttaste aktivieren" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion+Shift kann Handakuon ausgeben" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Daumen-_Shift Tastentabelle:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Daumen-Shift Tastaturbelegung" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Daumen-Shift" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "Kommando zum _editieren von Wörterbüchern:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Kommando zum _Addieren von Wörtern:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Konfiguration des voreingestellten Wörterbuches" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Ansehen" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Hinzufügen" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Löschen" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Hoch" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Reihenfolge kann auf dem Sprachbalken gewechselt werden" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Runter" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Erweiterte Wörterbücher" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Wörterbuch" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Info" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "S_chließen" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Tastaturkürzel _editieren" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Tastenkode:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modifizierer:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lt" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "_Strg" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Shift" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "Auff_rischen" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "_Eingabe Zeichen" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "_Ausgabe Zeichen" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_Linker Daumen-Shift" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_Rechter Daumen-Shift" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Entfernen" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Kurzes Label:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Beschreibung:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Beim der Wörterbücher nur das ausgewählte Wörterbuch alleine verwenden" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Eigenes Wörterbuch ins Systemwörterbuch einfügen" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "_Umgekehrte Konvertierung aktivieren" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Der Anthy-Engine für die IBus Eingabe-Plattform" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Mike FABIAN " ibus-anthy-1.5.17/po/el.po000066400000000000000000001073121475510605700152640ustar00rootroot00000000000000# Greek translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # dm3k , 2012 # dm3k , 2012 # Giannis Antypas , 2024. msgid "" msgstr "" "Project-Id-Version: IBus-Anthy\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2017-03-17 13:26+0900\n" "PO-Revision-Date: 2024-09-07 17:38+0000\n" "Last-Translator: Giannis Antypas \n" "Language-Team: Greek \n" "Language: el\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 5.7.2\n" #: ../data/ibus-anthy.appdata.xml.in.h:1 msgid "Japanese input method" msgstr "Μέθοδος εισαγωγής Ιαπωνικών" #: ../data/ibus-anthy.appdata.xml.in.h:2 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" "Η μέθοδος εισαγωγής Anthy είναι σχεδιασμένη για καταχώρηση κειμένου " "Ιαπωνικών." #: ../data/ibus-anthy.appdata.xml.in.h:3 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Οι μέθοδοι εισαγωγής είναι συστήματα πληκτρολόγησης που επιτρέπουν στους " "χρήστες να εισάγουν πολύπλοκες γλώσσες. Είναι απαραίτητες επειδή περιέχουν " "πάρα πολλούς χαρακτήρες ώστε να είναι απλά διαθέσιμες σε ένα παραδοσιακό " "πληκτρολόγιο." #: ../engine/python2/default.xml.in.in.h:1 #: ../engine/python3/default.xml.in.in.h:1 msgid "Anthy Input Method" msgstr "Μέθοδος εισαγωγής Anthy" #: ../engine/python2/engine.py:207 ../engine/python3/engine.py:208 msgid "" "Could not enable Anthy.\n" "The end of the content of the file .anthy/last-record2_default.utf8 in your " "home directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Αδυναμία ενεργοποίησης του Anthy.\n" "Το τέλος του περιεχομένου του αρχείου .anthy/last-record2_default.utf8 στον " "αρχικό σας κατάλογο δεν είναι '\\n" "'. Δηλαδή μη ορθή μορφή κειμένου.\n" "Παρακαλούμε φτιάξτε το αρχείο ή αφαιρέστε το χειροκίνητα και επανεκκινήστε " "το IBus." #: ../engine/python2/engine.py:255 ../engine/python3/engine.py:256 #: ../setup/python2/main.py:416 ../setup/python3/main.py:421 msgid "Preferences - Anthy" msgstr "Προτιμήσεις - Anthy" #: ../engine/python2/engine.py:257 ../engine/python3/engine.py:258 msgid "Configure Anthy" msgstr "Ρυθμίσεις Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: ../engine/python2/engine.py:294 ../engine/python2/engine.py:382 #: ../engine/python2/engine.py:449 ../engine/python2/engine.py:525 #: ../engine/python2/engine.py:856 ../engine/python2/engine.py:884 #: ../engine/python2/engine.py:908 ../engine/python2/engine.py:934 #: ../engine/python2/engine.py:996 ../engine/python3/engine.py:295 #: ../engine/python3/engine.py:383 ../engine/python3/engine.py:450 #: ../engine/python3/engine.py:526 ../engine/python3/engine.py:851 #: ../engine/python3/engine.py:879 ../engine/python3/engine.py:903 #: ../engine/python3/engine.py:929 ../engine/python3/engine.py:991 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: ../engine/python2/engine.py:295 ../engine/python2/engine.py:857 #: ../engine/python3/engine.py:296 ../engine/python3/engine.py:852 #: ../setup/python2/main.py:401 ../setup/python3/main.py:406 msgid "Input mode" msgstr "Μέθοδος εισαγωγής" #: ../engine/python2/engine.py:301 ../engine/python3/engine.py:302 msgid "Switch input mode" msgstr "Αλλαγή μεθόδου εισαγωγής" #: ../engine/python2/engine.py:311 ../engine/python3/engine.py:312 #: ../setup/python2/setup.ui.h:1 ../setup/python3/setup.ui.h:1 msgid "Hiragana" msgstr "Χιραγκάνα" #: ../engine/python2/engine.py:320 ../engine/python3/engine.py:321 #: ../setup/python2/setup.ui.h:2 ../setup/python3/setup.ui.h:2 msgid "Katakana" msgstr "Κατακάνα" #: ../engine/python2/engine.py:329 ../engine/python3/engine.py:330 #: ../setup/python2/setup.ui.h:3 ../setup/python3/setup.ui.h:3 msgid "Halfwidth Katakana" msgstr "Κατακάνα μισού πλάτους" #: ../engine/python2/engine.py:338 ../engine/python3/engine.py:339 #: ../setup/python2/setup.ui.h:4 ../setup/python3/setup.ui.h:4 msgid "Latin" msgstr "Λατινικοί χαρακτήρες" #: ../engine/python2/engine.py:347 ../engine/python3/engine.py:348 #: ../setup/python2/setup.ui.h:5 ../setup/python3/setup.ui.h:5 msgid "Wide Latin" msgstr "Λατινικοί πλήρους πλάτους" #: ../engine/python2/engine.py:383 ../engine/python2/engine.py:885 #: ../engine/python2/engine.py:909 ../engine/python3/engine.py:384 #: ../engine/python3/engine.py:880 ../engine/python3/engine.py:904 #: ../setup/python2/main.py:404 ../setup/python3/main.py:409 msgid "Typing method" msgstr "Μέθοδος πληκτρολόγησης" #: ../engine/python2/engine.py:389 ../engine/python3/engine.py:390 msgid "Switch typing method" msgstr "Αλλαγή μεθόδου πληκτρολόγησης" #: ../engine/python2/engine.py:399 ../engine/python3/engine.py:400 #: ../setup/python2/setup.ui.h:12 ../setup/python3/setup.ui.h:12 msgid "Romaji" msgstr "Ρομάτζι" #: ../engine/python2/engine.py:408 ../engine/python3/engine.py:409 #: ../setup/python2/setup.ui.h:13 ../setup/python3/setup.ui.h:13 msgid "Kana" msgstr "Κάνα" #: ../engine/python2/engine.py:417 ../engine/python3/engine.py:418 #: ../setup/python2/setup.ui.h:14 ../setup/python3/setup.ui.h:14 msgid "Thumb shift" msgstr "Μέθοδος thumb shift" #: ../engine/python2/engine.py:450 ../engine/python2/engine.py:935 #: ../engine/python3/engine.py:451 ../engine/python3/engine.py:930 #: ../setup/python2/main.py:407 ../setup/python3/main.py:412 msgid "Segment mode" msgstr "Λειτουργία τμήματος" #: ../engine/python2/engine.py:456 ../engine/python3/engine.py:457 msgid "Switch conversion mode" msgstr "Αλλαγή μεθόδου μετατροπής" #: ../engine/python2/engine.py:466 ../engine/python3/engine.py:467 #: ../setup/python2/setup.ui.h:15 ../setup/python3/setup.ui.h:15 msgid "Multiple segment" msgstr "Πολλαπλά τμήματα" #: ../engine/python2/engine.py:475 ../engine/python3/engine.py:476 #: ../setup/python2/setup.ui.h:16 ../setup/python3/setup.ui.h:16 msgid "Single segment" msgstr "Μοναδικό τμήμα" #: ../engine/python2/engine.py:484 ../engine/python3/engine.py:485 #: ../setup/python2/setup.ui.h:17 ../setup/python3/setup.ui.h:17 msgid "Immediate conversion (multiple segment)" msgstr "Άμεση μετατροπή (πολαπλά τμήματα)" #: ../engine/python2/engine.py:493 ../engine/python3/engine.py:494 #: ../setup/python2/setup.ui.h:18 ../setup/python3/setup.ui.h:18 msgid "Immediate conversion (single segment)" msgstr "Άμεση μετατροπή (μοναδικό τμήμα)" #: ../engine/python2/engine.py:526 ../engine/python2/engine.py:997 #: ../engine/python3/engine.py:527 ../engine/python3/engine.py:992 #: ../setup/python2/main.py:410 ../setup/python3/main.py:415 msgid "Dictionary mode" msgstr "Λειτουργία λεξικού" #: ../engine/python2/engine.py:532 ../engine/python3/engine.py:533 msgid "Switch dictionary" msgstr "Αλλαγή λεξικού" #: ../engine/python2/engine.py:615 ../engine/python3/engine.py:615 #: ../setup/python2/main.py:413 ../setup/python3/main.py:418 msgid "Dictionary - Anthy" msgstr "Λεξικό - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: ../engine/python2/engine.py:621 ../engine/python3/engine.py:620 msgid "Dic" msgstr "Λξκ" #: ../engine/python2/engine.py:628 ../engine/python3/engine.py:627 msgid "Configure dictionaries" msgstr "Ρυθμίσεις λεξικών" #: ../engine/python2/engine.py:638 ../engine/python3/engine.py:637 msgid "Edit dictionaries" msgstr "Επεξεργασία λεξικών" #: ../engine/python2/engine.py:640 ../engine/python3/engine.py:639 msgid "Launch the dictionary tool" msgstr "Εκκίνηση εργαλείου λεξικού" #: ../engine/python2/engine.py:647 ../engine/python3/engine.py:646 msgid "Add words" msgstr "Προσθήκη λέξεων" #: ../engine/python2/engine.py:649 ../engine/python3/engine.py:648 msgid "Add words to the dictionary" msgstr "Προσθήκη λέξεων στο λεξικό" #: ../setup/python2/anthyprefs.py.in:1105 ../setup/python2/setup.ui.h:36 #: ../setup/python3/anthyprefs.py.in:1098 ../setup/python3/setup.ui.h:36 msgid "General" msgstr "Γενικά" #: ../setup/python2/anthyprefs.py.in:1116 #: ../setup/python3/anthyprefs.py.in:1109 msgid "Zip Code Conversion" msgstr "Μετατροπή ταχυδρομικών κωδικών" #: ../setup/python2/anthyprefs.py.in:1127 #: ../setup/python3/anthyprefs.py.in:1120 msgid "Symbol" msgstr "Σύμβολα" #: ../setup/python2/anthyprefs.py.in:1138 #: ../setup/python3/anthyprefs.py.in:1131 msgid "Old Character Style" msgstr "Παλιές μορφές χαρακτήρων" #: ../setup/python2/anthyprefs.py.in:1148 #: ../setup/python3/anthyprefs.py.in:1141 msgid "Era" msgstr "Περίοδος" #: ../setup/python2/anthyprefs.py.in:1158 #: ../setup/python3/anthyprefs.py.in:1151 msgid "Emoji" msgstr "Εμότζι" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:1 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:1 msgid "IBus Anthy Setup" msgstr "Ρύθμιση IBus Anthy" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:2 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:2 msgid "Set up IBus Anthy engine" msgstr "Ρύθμιση μηχανής IBus Anthy" #. self.__run_message_dialog needs self.__builder. #: ../setup/python2/main.py:133 ../setup/python3/main.py:136 msgid "ibus is not running." msgstr "Το ibus δεν εκτελείται." #: ../setup/python2/main.py:188 ../setup/python3/main.py:191 msgid "Menu label" msgstr "Ετικέτα μενού" #: ../setup/python2/main.py:207 ../setup/python3/main.py:210 msgid "Command" msgstr "Εντολή" #: ../setup/python2/main.py:211 ../setup/python3/main.py:214 msgid "Shortcut" msgstr "Συντόμευση" #: ../setup/python2/main.py:256 ../setup/python3/main.py:259 msgid "Description" msgstr "Περιγραφή" #. Translators: "Embd" is an abbreviation of "embedded". #: ../setup/python2/main.py:264 ../setup/python3/main.py:267 msgid "Embd" msgstr "Ενσμ." #. Translators: "Sgl" is an abbreviation of "single". #: ../setup/python2/main.py:272 ../setup/python3/main.py:275 msgid "Sgl" msgstr "Μν." #: ../setup/python2/main.py:447 ../setup/python2/main.py:483 #: ../setup/python3/main.py:452 ../setup/python3/main.py:488 msgid "Input Chars" msgstr "Εισ. Χαρακτήρες" #: ../setup/python2/main.py:449 ../setup/python2/main.py:485 #: ../setup/python3/main.py:454 ../setup/python3/main.py:490 msgid "Output Chars" msgstr "Εξ. Χαρακτήρες" #: ../setup/python2/main.py:531 ../setup/python3/main.py:536 msgid "Input" msgstr "Εισαγωγή" #: ../setup/python2/main.py:533 ../setup/python3/main.py:538 msgid "Single" msgstr "Μονό" #: ../setup/python2/main.py:535 ../setup/python3/main.py:540 msgid "Left" msgstr "Αριστερά" #: ../setup/python2/main.py:537 ../setup/python3/main.py:542 msgid "Right" msgstr "Δεξιά" #: ../setup/python2/main.py:619 ../setup/python3/main.py:624 msgid "Customize Romaji Key Table" msgstr "Προσαρμογή πληκτρολογίου Ρομάτζι" #: ../setup/python2/main.py:620 ../setup/python2/setup.ui.h:54 #: ../setup/python3/main.py:625 ../setup/python3/setup.ui.h:54 msgid "_Romaji Key Table:" msgstr "Πίνακας πλήκτρων _Ρομάτζι:" #: ../setup/python2/main.py:621 ../setup/python2/main.py:627 #: ../setup/python3/main.py:626 ../setup/python3/main.py:632 msgid "_Output Chars" msgstr "Αποτέλεσμα _εξόδου" #: ../setup/python2/main.py:622 ../setup/python2/main.py:1122 #: ../setup/python2/main.py:1270 ../setup/python2/setup.ui.h:27 #: ../setup/python3/main.py:627 ../setup/python3/main.py:1116 #: ../setup/python3/main.py:1264 ../setup/python3/setup.ui.h:27 msgid "Default" msgstr "Προεπιλογή" #: ../setup/python2/main.py:625 ../setup/python3/main.py:630 msgid "Customize Kana Key Table" msgstr "Προσαρμογή πληκτρολογίου Κάνα" #: ../setup/python2/main.py:626 ../setup/python2/setup.ui.h:56 #: ../setup/python3/main.py:631 ../setup/python3/setup.ui.h:56 msgid "_Kana Key Table:" msgstr "Πίνακας πλήκτρων _Κάνα:" #: ../setup/python2/main.py:628 ../setup/python3/main.py:633 msgid "Japanese Keyboard Layout" msgstr "Διάταξη πληκτρολογίου Ιαπωνικών" #: ../setup/python2/main.py:629 ../setup/python3/main.py:634 msgid "U.S. Keyboard Layout" msgstr "Διάταξη πληκτρολογίου Η.Π.Α." #: ../setup/python2/main.py:632 ../setup/python3/main.py:637 msgid "Customize Thumb Shift Key Table" msgstr "Προσαρμογή πληκτρολογίου Thumb Shift" #: ../setup/python2/main.py:633 ../setup/python3/main.py:638 msgid "_Thumb Shift Key Table:" msgstr "Πίνακας πλήκτρων _Thumb Shift:" #: ../setup/python2/main.py:634 ../setup/python3/main.py:639 msgid "Single _Output Chars" msgstr "Μονοί χαρακτήρες _Εξόδου" #: ../setup/python2/main.py:635 ../setup/python3/main.py:640 msgid "Base" msgstr "Βάση" #: ../setup/python2/main.py:636 ../setup/python3/main.py:641 msgid "NICOLA-J key extension" msgstr "Επεκτάσεις πλήκτρων NICOLA-J" #: ../setup/python2/main.py:637 ../setup/python3/main.py:642 msgid "NICOLA-A key extension" msgstr "Επεκτάσεις πλήκτρων NICOLA-A" #: ../setup/python2/main.py:638 ../setup/python3/main.py:643 msgid "NICOLA-F key extension" msgstr "Επεκτάσεις πλήκτρων NICOLA-F" #: ../setup/python2/main.py:639 ../setup/python3/main.py:644 msgid "FMV KB231-J key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB231-J" #: ../setup/python2/main.py:640 ../setup/python3/main.py:645 msgid "FMV KB231-A key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB231-A" #: ../setup/python2/main.py:641 ../setup/python3/main.py:646 msgid "FMV KB231-F key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB231-F" #: ../setup/python2/main.py:642 ../setup/python3/main.py:647 msgid "FMV KB611-J key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB611-J" #: ../setup/python2/main.py:643 ../setup/python3/main.py:648 msgid "FMV KB611-A key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB611-A" #: ../setup/python2/main.py:644 ../setup/python3/main.py:649 msgid "FMV KB611-F key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB611-F" #: ../setup/python2/main.py:788 ../setup/python3/main.py:793 msgid "Your choosed file has already been added: " msgstr "Το επιλεγμένο σας αρχείο έχει ήδη προστεθεί: " #: ../setup/python2/main.py:792 ../setup/python3/main.py:797 msgid "The file you have chosen does not exist: " msgstr "Το αρχείο που έχετε επιλέξει δεν υπάρχει: " #: ../setup/python2/main.py:796 ../setup/python3/main.py:801 msgid "Your choosed file is a directory: " msgstr "Το επιλεγμένο σας αρχείο είναι ένας κατάλογος: " #: ../setup/python2/main.py:800 ../setup/python3/main.py:805 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Δε μπορείτε να προσθέσετε λεξικά στον ιδιαίτερο κατάλογο του anthy: " #: ../setup/python2/main.py:807 ../setup/python3/main.py:812 msgid "Your file path is not good: " msgstr "Η διαδρομή αρχείου σας δεν είναι ορθή: " #: ../setup/python2/main.py:986 ../setup/python3/main.py:989 msgid "The engine xml file does not exist: " msgstr "Το αρχείο μηχανής xml δεν υπάρχει: " #: ../setup/python2/main.py:1102 ../setup/python3/main.py:1096 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Η διάταξη πληκτρολογίου Anthy είναι αλλαγμένη. Παρακαλούμε επανεκκινήστε το " "ibus για να φορτώσετε ξανά τη διάταξη." #: ../setup/python2/main.py:1231 ../setup/python3/main.py:1225 msgid "Confirmation" msgstr "Επιβεβαίωση" #: ../setup/python2/main.py:1233 ../setup/python3/main.py:1227 msgid "You are about to close the setup dialog, is that OK?" msgstr "Πρόκειται να κλείσετε το διάλογο ρύθμισης, είναι εντάξει;" #: ../setup/python2/main.py:1248 ../setup/python3/main.py:1242 msgid "Notice!" msgstr "Ειδοποίηση!" #: ../setup/python2/main.py:1250 ../setup/python3/main.py:1244 msgid "" "You are about to close the setup dialog without saving your changes, is that " "OK?" msgstr "" "Πρόκειται να κλείσετε το διάλογο ρύθμισης χωρίς να αποθηκεύσετε τις αλλαγές " "σας, είναι εντάξει;" #: ../setup/python2/main.py:1371 ../setup/python3/main.py:1365 msgid "Please specify Input Chars" msgstr "Παρακαλούμε προσδιορίστε Χαρακτήρες Εισαγωγής" #: ../setup/python2/main.py:1374 ../setup/python3/main.py:1368 msgid "Please specify Output Chars" msgstr "Παρακαλούμε προσδιορίστε Χαρακτήρες Εξαγωγής" #: ../setup/python2/main.py:1377 ../setup/python3/main.py:1371 msgid "Please specify Left Thumb Shift Chars" msgstr "Παρακαλώ προσδιορίστε τους χαρακτήρες αριστερού Thumb Shift" #: ../setup/python2/main.py:1380 ../setup/python3/main.py:1374 msgid "Please specify Right Thumb Shift Chars" msgstr "Παρακαλώ προσδιορίστε τους χαρακτήρες δεξιού Thumb Shift" #: ../setup/python2/main.py:1393 ../setup/python2/main.py:1437 #: ../setup/python3/main.py:1387 ../setup/python3/main.py:1431 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Το προσαρμοσμένο σας πλήκτρο δεν είναι εκχωρημένο σε καμία ενότητα. Πιθανώς " "σφάλμα." #: ../setup/python2/main.py:1503 ../setup/python2/main.py:1590 #: ../setup/python3/main.py:1497 ../setup/python3/main.py:1584 msgid "Your file does not exist: " msgstr "Το αρχείο σας δεν υπάρχει: " #: ../setup/python2/main.py:1513 ../setup/python3/main.py:1507 msgid "Open Dictionary File" msgstr "Άνοιγμα αρχείου λεξικού" #: ../setup/python2/main.py:1516 ../setup/python2/main.py:1522 #: ../setup/python2/setup.ui.h:90 ../setup/python3/main.py:1510 #: ../setup/python3/main.py:1516 ../setup/python3/setup.ui.h:90 msgid "_Cancel" msgstr "_Ακύρωση" #: ../setup/python2/main.py:1517 ../setup/python3/main.py:1511 msgid "_Open" msgstr "Άν_οιγμα" #: ../setup/python2/main.py:1520 ../setup/python3/main.py:1514 msgid "Edit Dictionary File" msgstr "Επεξεργασία αρχείου λεξικού" #: ../setup/python2/main.py:1523 ../setup/python2/main.py:1618 #: ../setup/python2/setup.ui.h:91 ../setup/python3/main.py:1517 #: ../setup/python3/main.py:1612 ../setup/python3/setup.ui.h:91 msgid "_OK" msgstr "_Εντάξει" #: ../setup/python2/main.py:1534 ../setup/python3/main.py:1528 msgid "Your choosed file is not correct." msgstr "Το επιλεγμένο σας αρχείο δεν είναι σωστό." #: ../setup/python2/main.py:1563 ../setup/python3/main.py:1557 msgid "You cannot delete the system dictionary." msgstr "Δε μπορείτε να διαγράψετε το λεξικό συστήματος." #: ../setup/python2/main.py:1586 ../setup/python3/main.py:1580 msgid "Your file is not good." msgstr "Το αρχείο σας δεν είναι σωστό." #: ../setup/python2/main.py:1616 ../setup/python3/main.py:1610 msgid "View Dictionary File" msgstr "Εμφάνιση αρχείου λεξικού" #: ../setup/python2/main.py:1787 ../setup/python3/main.py:1781 msgid "Please press a key (or a key combination)" msgstr "Παρακαλούμε πατήστε ένα κουμπί (ή ένα συνδυασμό κουμπιών)" #: ../setup/python2/main.py:1788 ../setup/python3/main.py:1782 msgid "The dialog will be closed when the key is released" msgstr "Το παράθυρο διαλόγου θα κλείσει όταν απελευθερωθεί το κουμπί" #: ../setup/python2/main.py:1808 ../setup/python2/main.py:1829 #: ../setup/python3/main.py:1802 ../setup/python3/main.py:1823 msgid "Invalid keysym" msgstr "Άκυρο keysym" #: ../setup/python2/main.py:1809 ../setup/python2/main.py:1830 #: ../setup/python3/main.py:1803 ../setup/python3/main.py:1824 msgid "This keysym is not valid" msgstr "Αυτό το keysym δεν είναι έγκυρο" #: ../setup/python2/setup.ui.h:6 ../setup/python3/setup.ui.h:6 msgid "NICOLA-J" msgstr "NICOLA-J" #: ../setup/python2/setup.ui.h:7 ../setup/python3/setup.ui.h:7 msgid "NICOLA-A" msgstr "NICOLA-A" #: ../setup/python2/setup.ui.h:8 ../setup/python3/setup.ui.h:8 msgid "NICOLA-F" msgstr "NICOLA-F" #: ../setup/python2/setup.ui.h:9 ../setup/python3/setup.ui.h:9 msgid "None" msgstr "Κανένα" #: ../setup/python2/setup.ui.h:10 ../setup/python3/setup.ui.h:10 msgid "FMV KB231 key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB231" #: ../setup/python2/setup.ui.h:11 ../setup/python3/setup.ui.h:11 msgid "FMV KB611 key extension" msgstr "Επεκτάσεις πλήκτρων FMV KB611" #: ../setup/python2/setup.ui.h:19 ../setup/python3/setup.ui.h:19 msgid "Keep numpad codes" msgstr "Διατήρηση κωδικών αριθμητικού πληκτρολογίου" #: ../setup/python2/setup.ui.h:20 ../setup/python3/setup.ui.h:20 msgid "Convert characters" msgstr "Μετατροπή χαρακτήρων" #: ../setup/python2/setup.ui.h:21 ../setup/python3/setup.ui.h:21 msgid "Do nothing" msgstr "Να μη γίνει τίποτε" #: ../setup/python2/setup.ui.h:22 ../setup/python3/setup.ui.h:22 msgid "Automatically convert" msgstr "Αυτόματη μετατροπή" #: ../setup/python2/setup.ui.h:23 ../setup/python3/setup.ui.h:23 msgid "Automatically commit" msgstr "Αυτόματη υποβολή" #: ../setup/python2/setup.ui.h:24 ../setup/python3/setup.ui.h:24 msgid "Clear" msgstr "Εκκαθάριση" #: ../setup/python2/setup.ui.h:25 ../setup/python3/setup.ui.h:25 msgid "Commit" msgstr "Υποβολή" #: ../setup/python2/setup.ui.h:26 ../setup/python3/setup.ui.h:26 msgid "Hold" msgstr "Κράτηση" #: ../setup/python2/setup.ui.h:28 ../setup/python3/setup.ui.h:28 msgid "ATOK" msgstr "ATOK" #: ../setup/python2/setup.ui.h:29 ../setup/python3/setup.ui.h:29 msgid "Wnn" msgstr "Wnn" #: ../setup/python2/setup.ui.h:30 ../setup/python3/setup.ui.h:30 msgid "Setup - IBus-Anthy" msgstr "Ρύθμιση - IBus-Anthy" #: ../setup/python2/setup.ui.h:31 ../setup/python3/setup.ui.h:31 msgid "_Input Mode:" msgstr "Λειτουργία _Εισαγωγής:" #: ../setup/python2/setup.ui.h:32 ../setup/python3/setup.ui.h:32 msgid "_Typing Method:" msgstr "Μέθοδος _Πληκτρολόγησης:" #: ../setup/python2/setup.ui.h:33 ../setup/python3/setup.ui.h:33 msgid "Conversion _Mode:" msgstr "_Λειτουργία Μετατροπής:" #: ../setup/python2/setup.ui.h:34 ../setup/python3/setup.ui.h:34 msgid "Initial Setting" msgstr "Αρχική ρύθμιση" #: ../setup/python2/setup.ui.h:35 ../setup/python3/setup.ui.h:35 msgid "Menu Visibility on Status Icon" msgstr "Ορατότητα μενού στο εικονίδιο κατάστασης" #: ../setup/python2/setup.ui.h:37 ../setup/python3/setup.ui.h:37 msgid "_Period Style:" msgstr "Στυλ _τελείας:" #: ../setup/python2/setup.ui.h:38 ../setup/python3/setup.ui.h:38 msgid "Symbo_l Style:" msgstr "Στιλ Συμβό_λου:" #: ../setup/python2/setup.ui.h:39 ../setup/python3/setup.ui.h:39 msgid "Numpad _Key Type:" msgstr "Συμπεριφορά _αριθμητικού πληκτρολογίου:" #: ../setup/python2/setup.ui.h:40 ../setup/python3/setup.ui.h:40 msgid "_Behavior on Period:" msgstr "_Συμπεριφορά στην τελεία:" #: ../setup/python2/setup.ui.h:41 ../setup/python3/setup.ui.h:41 msgid "Behavior on _Focus Out:" msgstr "Συμπεριφορά κατά την απώλεια εστίασης:" #: ../setup/python2/setup.ui.h:42 ../setup/python3/setup.ui.h:42 msgid "Behavior" msgstr "Συμπεριφορά" #: ../setup/python2/setup.ui.h:43 ../setup/python3/setup.ui.h:43 msgid "Candidate _Window Page Size:" msgstr "Μέγεθος σελίδας υποψήφιου _παραθύρου:" #: ../setup/python2/setup.ui.h:44 ../setup/python3/setup.ui.h:44 msgid "Convert _symbols with the one column width" msgstr "Μετατροπή _συμβόλων με το πλάτος μιας στήλης" #: ../setup/python2/setup.ui.h:45 ../setup/python3/setup.ui.h:45 msgid "Convert _numbers with the one column width" msgstr "Μετατροπή _αριθμών με το πλάτος μιας στήλης" #: ../setup/python2/setup.ui.h:46 ../setup/python3/setup.ui.h:46 msgid "Con_vert spaces with the one column width" msgstr "Μετατροπή _κενών με το πλάτος μιας στήλης" #: ../setup/python2/setup.ui.h:47 ../setup/python3/setup.ui.h:47 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Εναλλαγή «Χιραγκάνα» και «Λατινικών» με το πλήκτρο Shift και το πλήκτρο " "Χιραγκάνα-Κατακάνα στην προεπεξεργασία" #: ../setup/python2/setup.ui.h:48 ../setup/python3/setup.ui.h:48 msgid "Other" msgstr "Λοιπά" #: ../setup/python2/setup.ui.h:49 ../setup/python3/setup.ui.h:49 msgid "Conversion" msgstr "Μετατροπή" #: ../setup/python2/setup.ui.h:50 ../setup/python3/setup.ui.h:50 msgid "_Shortcut Type:" msgstr "Τύπος _συντόμευσης:" #: ../setup/python2/setup.ui.h:51 ../setup/python3/setup.ui.h:51 msgid "De_fault" msgstr "Προε_πιλογή" #: ../setup/python2/setup.ui.h:52 ../setup/python3/setup.ui.h:52 msgid "_Edit" msgstr "_Επεξεργασία" #: ../setup/python2/setup.ui.h:53 ../setup/python3/setup.ui.h:53 msgid "Key Binding" msgstr "Σύνδεση πλήκτρου" #: ../setup/python2/setup.ui.h:55 ../setup/python3/setup.ui.h:55 msgid "Romaji" msgstr "Ρομάτζι" #: ../setup/python2/setup.ui.h:57 ../setup/python3/setup.ui.h:57 msgid "Kana" msgstr "Κάνα" #: ../setup/python2/setup.ui.h:58 ../setup/python3/setup.ui.h:58 msgid "Keyboad _layout:" msgstr "_Διάταξη πληκτρολογίου:" #: ../setup/python2/setup.ui.h:59 ../setup/python3/setup.ui.h:59 msgid "Keyboard layout" msgstr "Διάταξη πληκτρολογίου" #: ../setup/python2/setup.ui.h:60 ../setup/python3/setup.ui.h:60 msgid "Typing Method" msgstr "Μέθοδος πληκτρολόγησης" #: ../setup/python2/setup.ui.h:61 ../setup/python3/setup.ui.h:61 msgid "_Left Thumb Shift Key:" msgstr "Πλήκτρο _αριστερού Thumb Shift:" #: ../setup/python2/setup.ui.h:62 ../setup/python3/setup.ui.h:62 msgid "Right _Thumb Shift Key:" msgstr "Δεξί _Thumb Shift:" #: ../setup/python2/setup.ui.h:63 ../setup/python3/setup.ui.h:63 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "Προσαρμογή διάταξης μεθόδου _εισαγωγής στη διάταξη πληκτρολογίου συστήματος" #: ../setup/python2/setup.ui.h:64 ../setup/python3/setup.ui.h:64 msgid "Adjust IM layout to XKB layout" msgstr "Προσαρμογή διάταξης IM στη διάταξη XKB" #: ../setup/python2/setup.ui.h:65 ../setup/python3/setup.ui.h:65 msgid "Input _Method Layout:" msgstr "Διάταξη _μεθόδου εισαγωγής:" #: ../setup/python2/setup.ui.h:66 ../setup/python3/setup.ui.h:66 msgid "Restart IBus when you change the keyboard layout" msgstr "Επανεκκίνηση IBus όταν αλλάξετε τη διάταξη πληκτρολογίου" #: ../setup/python2/setup.ui.h:67 ../setup/python3/setup.ui.h:67 msgid "Restart IBus when you change XKB" msgstr "Επανεκκίνηση IBus όταν αλλάξετε το XKB" #: ../setup/python2/setup.ui.h:68 ../setup/python3/setup.ui.h:68 msgid "_Additional Key Arrangement:" msgstr "Διαρρύθμιση _πρόσθετων πλήκτρων:" #: ../setup/python2/setup.ui.h:69 ../setup/python3/setup.ui.h:69 msgid "" "'~', '『', '¢', '£' and so on can be output with " "Thumb Shift key" msgstr "" "Τα '~', '『', '¢', '£' και ούτω καθεξής μπορούν να " "παραχθούν με το πλήκτρο Thumb Shift" #: ../setup/python2/setup.ui.h:70 ../setup/python3/setup.ui.h:70 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Δε χρειάζεται να επαναδιαμορφώσετε τη διάταξη πληκτρολογίου συστήματος για " "τη «Διαρρύθμιση πρόσθετων πλήκτρων» αφού αυτή η επιλογή αλλάζει τη διάταξη " "μεθόδου εισαγωγής μόνο στην περίπτωση που ενεργοποιηθεί η μέθοδος εισαγωγής." #: ../setup/python2/setup.ui.h:71 ../setup/python3/setup.ui.h:71 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Δε χρειάζεται να επαναδιαμορφώσετε το XKB αφού αυτή η επιλογή αλλάζει τη " "διάταξη IM μόνο με το IM ενεργοποιημένο." #: ../setup/python2/setup.ui.h:72 ../setup/python3/setup.ui.h:72 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Ενεργοποίηση ημιφωνικού ηχητικού σήματος με το πλήκτρο Shift" #: ../setup/python2/setup.ui.h:73 ../setup/python3/setup.ui.h:73 msgid "Seion + Shift can output Handakuon" msgstr "Το Seion + Shift εισάγουν handakuon" #: ../setup/python2/setup.ui.h:74 ../setup/python3/setup.ui.h:74 msgid "Thumb _Shift Key Table:" msgstr "Πίνακας πλήκτρων Thumb _Shift:" #: ../setup/python2/setup.ui.h:75 ../setup/python3/setup.ui.h:75 msgid "Thumb Shift Layout" msgstr "Διάταξη Thumb Shift" #: ../setup/python2/setup.ui.h:76 ../setup/python3/setup.ui.h:76 msgid "Thumb Shift" msgstr "Thumb Shift" #: ../setup/python2/setup.ui.h:77 ../setup/python3/setup.ui.h:77 msgid "_Edit Dictionary Command:" msgstr "Εντολή _επεξεργασίας λεξικού:" #: ../setup/python2/setup.ui.h:78 ../setup/python3/setup.ui.h:78 msgid "_Add Word Command:" msgstr "Εντολή _προσθήκης λέξης:" #: ../setup/python2/setup.ui.h:79 ../setup/python3/setup.ui.h:79 msgid "Default Dictionary Configuration" msgstr "Διαμόρφωση προεπιλεγμένου λεξικού" #: ../setup/python2/setup.ui.h:80 ../setup/python3/setup.ui.h:80 msgid "_View" msgstr "_Προβολή" #: ../setup/python2/setup.ui.h:81 ../setup/python3/setup.ui.h:81 msgid "_Add" msgstr "_Προσθήκη" #: ../setup/python2/setup.ui.h:82 ../setup/python3/setup.ui.h:82 msgid "_Delete" msgstr "_Διαγραφή" #: ../setup/python2/setup.ui.h:83 ../setup/python3/setup.ui.h:83 msgid "_Up" msgstr "_Πάνω" #: ../setup/python2/setup.ui.h:84 ../setup/python3/setup.ui.h:84 msgid "You can change the order on language bar" msgstr "Μπορείτε να αλλάξετε τη σειρά στη γραμμή γλωσσών" #: ../setup/python2/setup.ui.h:85 ../setup/python3/setup.ui.h:85 msgid "_Down" msgstr "_Κάτω" #: ../setup/python2/setup.ui.h:86 ../setup/python3/setup.ui.h:86 msgid "Extended Dictionaries" msgstr "Εκτεταμένα λεξικά" #: ../setup/python2/setup.ui.h:87 ../setup/python3/setup.ui.h:87 msgid "Dictionary" msgstr "Λεξικό" #: ../setup/python2/setup.ui.h:88 ../setup/python3/setup.ui.h:88 msgid "About" msgstr "Σχετικά" #: ../setup/python2/setup.ui.h:89 ../setup/python3/setup.ui.h:89 msgid "_Apply" msgstr "_Εφαρμογή" #: ../setup/python2/setup.ui.h:92 ../setup/python3/setup.ui.h:92 msgid "Edit Shortcut" msgstr "Επεξεργασία συντόμευσης" #: ../setup/python2/setup.ui.h:93 ../setup/python3/setup.ui.h:93 msgid "Key Code:" msgstr "Κωδικός πλήκτρων:" #: ../setup/python2/setup.ui.h:94 ../setup/python3/setup.ui.h:94 msgid "Modifier:" msgstr "Τροποποιητής:" #: ../setup/python2/setup.ui.h:95 ../setup/python3/setup.ui.h:95 msgid "A_lternate" msgstr "A_lternate" #: ../setup/python2/setup.ui.h:96 ../setup/python3/setup.ui.h:96 msgid "Co_ntrol" msgstr "Co_ntrol" #: ../setup/python2/setup.ui.h:97 ../setup/python3/setup.ui.h:97 msgid "_Shift" msgstr "_Shift" #: ../setup/python2/setup.ui.h:98 ../setup/python3/setup.ui.h:98 msgid "_Refresh" msgstr "_Ανανέωση" #: ../setup/python2/setup.ui.h:99 ../setup/python3/setup.ui.h:99 msgid "_Input Characters" msgstr "Χαρακτήρες εισαγωγής" #: ../setup/python2/setup.ui.h:100 ../setup/python3/setup.ui.h:100 msgid "_Output Characters" msgstr "Χαρακτήρες εξαγωγής" #: ../setup/python2/setup.ui.h:101 ../setup/python3/setup.ui.h:101 msgid "_Left Thumb Shift" msgstr "_αριστερό Thumb Shift" #: ../setup/python2/setup.ui.h:102 ../setup/python3/setup.ui.h:102 msgid "_Right Thumb Shift" msgstr "_δεξί Thumb Shift" #: ../setup/python2/setup.ui.h:103 ../setup/python3/setup.ui.h:103 msgid "_Remove" msgstr "_Αφαίρεση" #: ../setup/python2/setup.ui.h:104 ../setup/python3/setup.ui.h:104 msgid "_Close" msgstr "_Κλείσιμο" #: ../setup/python2/setup.ui.h:105 ../setup/python3/setup.ui.h:105 msgid "_Short Label:" msgstr "_Σύντομη ετικέτα:" #: ../setup/python2/setup.ui.h:106 ../setup/python3/setup.ui.h:106 msgid "_Description:" msgstr "_Περιγραφή:" #: ../setup/python2/setup.ui.h:107 ../setup/python3/setup.ui.h:107 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Χρήση μόνου του λεξικού σας με εναλλαγή λεξικών" #: ../setup/python2/setup.ui.h:108 ../setup/python3/setup.ui.h:108 msgid "_Embed your dictionary in the system dictionary" msgstr "_Ενσωμάτωση του λεξικού σας στο λεξικό συστήματος" #: ../setup/python2/setup.ui.h:109 ../setup/python3/setup.ui.h:109 msgid "Enable the _reverse conversion" msgstr "Ενεργοποίηση της _αντίστροφης μετατροπής" #: ../setup/python2/setup.ui.h:110 ../setup/python3/setup.ui.h:110 msgid "The Anthy engine for the IBus input platform" msgstr "Η μηχανή Anthy για την πλατφόρμα εισαγωγής IBus" #: ../setup/python2/setup.ui.h:111 ../setup/python3/setup.ui.h:111 msgid "translator_credits" msgstr "μνεία μεταφραστών" ibus-anthy-1.5.17/po/es.po000066400000000000000000000722611475510605700152770ustar00rootroot00000000000000# Spanish translation of ibus-anthy. # Copyright (C) 2009-2020 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # Máximo Castañeda Riloba , 2017. #zanata # fujiwara , 2017. #zanata # fujiwara , 2019. #zanata # Mike FABIAN , 2020. # Emilio Herrera , 2020. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2020-10-23 12:15+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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.3.1\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Método de entrada japonés" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" "El método de entrada Anthy está diseñado para usarlo con texto japonés." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Los métodos de entrada son sistemas que facilitan el uso de idiomas " "complejos. Son necesarios porque estos idiomas tienen demasiados caracteres " "como para ponerlos de forma sencilla en un teclado tradicional." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Método de entrada Anthy" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "No se pudo activar Anthy.\n" "El archivo %s/last-record2_default.utf8 del directorio de usuario no '\\n" "'.l.e. termina con una línea nueva; es decir, no tiene el formato correcto.\n" "Corrija el fichero o bórrelo y reinicie IBus." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Ajustes - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Configura Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Modo de entrada" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Cambia el modo de entrada" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana de medio ancho" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latino" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latino ancho" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Método mecanográfico" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Cambia el método de mecanografiado" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Selección con pulgares" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Modo de segmento" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Cambia el modo de conversión" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segmento múltiple" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmento individual" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Conversión inmediata (segmento múltiple)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Conversión inmediata (segmento individual)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Modo de diccionario" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Cambia el diccionario" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Diccionario - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Diccionario" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Configura diccionarios" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Editar diccionarios" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Ejecuta la herramienta de diccionarios" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Añadir palabras" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Añade palabras al diccionario" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "General" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Conversión de código postal" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Símbolo" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Estilo antiguo" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "Ajustes de IBus Anthy" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Configura el motor Anthy de IBus" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Etiqueta de menú" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Comando" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Atajo" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Descripción" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Incl" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Indv" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Caracteres de entrada" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Caracteres de salida" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Entrada" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Individual" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Izquierdo" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Derecho" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Personalización de la tabla de teclas romaji" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "Tabla de teclas _romaji:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "Caracteres de _salida" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Predeterminado" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Personalización de la tabla de teclas kana" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Tabla de teclas _kana:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Teclado japonés" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "Teclado de EEUU" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Personalización de la tabla de selección con pulgares" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_Tabla de teclas de selección con pulgares:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Caracteres de _salida individuales" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "Extensión de teclas NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "Extensión de teclas NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "Extensión de teclas NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "Extensión de teclas FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "Extensión de teclas FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "Extensión de teclas FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "Extensión de teclas FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "Extensión de teclas FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "Extensión de teclas FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "El archivo ya estaba en la lista: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "El archivo no existe: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "Ha seleccionado un directorio: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "No puede añadir diccionario del directorio privado de anthy: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "Ruta incorrecta: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "No existe el archivo xml del motor: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "La disposición del teclado ha cambiado. Reinicie ibus para recargarla." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Indique los caracteres de entrada" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Indique los caracteres de salida" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "Indique los caracteres con pulgar izquierdo" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "Indique los caracteres con pulgar derecho" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Su tecla no aparece asignada en ninguna sección. Podría ser un error del " "programa." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "El archivo no existe: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Abrir archivo de diccionario" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Cancelar" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Abrir" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Editar archivo de diccionario" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_Aceptar" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "El archivo seleccionado no es válido." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "No puede eliminar el diccionario del sistema." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "El archivo no es correcto." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Ver archivos de diccionario" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Por favor, presione una tecla (o una combinación de teclas)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "El cuadro de diálogo se cerrará cuando la suelte" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "Keysym incorrecto" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Este keysym no es válido" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Ninguno" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Extensión de teclas FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Extensión de teclas FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Mantener los códigos del teclado numérico" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Convertir caracteres" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "No hacer nada" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Convertir automáticamente" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Asentar automáticamente" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Limpiar" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Asentar" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Mantener" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Ajustes - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "Modo de _entrada:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "Método _mecanográfico:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Modo de _conversión:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Ajustes iniciales" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Visibilidad del menú en el icono de estado" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Estilo de _punto:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Estilo de símbo_lo:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "_Tipo de tecla del teclado numérico:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Acción del punto:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Acción al perder el _foco:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Comportamiento" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Tamaño de página de la ventana de _candidatos:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Convertir _símbolos al ancho de columna" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Convertir _números al ancho de columna" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Convertir _espacios al ancho de columna" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Cambiar entre “hiragana” y “latino” pulsando mayúsculas y la tecla de " "Hiragana–Katakana en la preedición" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Otros" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Conversión" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_Tipo de atajo:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_Predeterminado" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Editar" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Vinculación de teclas" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Romaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "_Disposición del teclado:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Disposición del teclado" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Método mecanográfico" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Tecla de cambio de pulgar _izquierdo:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Tecla de cambio de pulgar _derecho:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "Ajustar la disposición del método de _entrada a la del teclado del sistema" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Ajusta la disposición del método de entrada a la de XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Disposición del _método de entrada:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Reinicie IBus cuando cambie la disposición del teclado" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Reinicie IBus cuando cambie XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "Disposición de teclas _adicionales:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "'~', '『', '¢', '£' y demás se pueden escribir con la tecla de cambio de " "pulgar" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "No es necesario cambiar la disposición del teclado del sistema para usar la " "\"Disposición de teclas adicionales\", pues esta opción sólo afecta al " "método de entrada cuando éste está activo." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "No necesita volver a configurar XKB, ya que esta opción sólo cambia la " "disposición del método de entrada cuando éste está activo." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" "Activar el uso de la tecla de mayúsculas para la marca de _semisonoridad" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Mayúsculas + Seion produce Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "_Tabla de teclas de selección con pulgares:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Disposición de la selección con pulgares" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Selección con pulgares" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "Comando de edición de _diccionario:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Comando de adición de _palabra:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Configuración del diccionario predeterminado" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Ver" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Añadir" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Eliminar" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Subir" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Puede cambiar el orden en la barra de idiomas" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Abajo" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Diccionarios extras" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Diccionario" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Acerca de" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Cerrar" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Edición de atajo" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Código de tecla:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modificador:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lternativa" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Mayúsculas" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Refrescar" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Caracteres de _entrada" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Caracteres de _salida" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Cambio de pulgar _izquierdo" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Cambio de pulgar _derecho" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Quitar" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Etiqueta corta:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Descripción:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Usar sólo su diccionario con los conmutados" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Incluir su diccionario en el del sistema" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "_Activar la conversión inversa" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "El motor Anthy para la plataforma de entrada IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "traductores" ibus-anthy-1.5.17/po/fi.po000066400000000000000000000615741475510605700152730ustar00rootroot00000000000000# Finnish translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2023 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Jan Kuparinen , 2021, 2023. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2023-02-18 19:20+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.15.2\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Japanilainen syöttötapa" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" "Anthy-syöttötapa on suunniteltu japaninkielisen tekstin kirjoittamiseen." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Syöttötavat ovat kirjoitusjärjestelmiä, joiden avulla käyttäjät voivat " "syöttää monimutkaisia kieliä. Ne ovat välttämättömiä, koska kielissä on " "liian monta merkkiä, jotta ne voidaan yksinkertaisesti sijoittaa " "perinteiseen näppäimistöön." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Anthyn syöttötapa" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Anthyä ei voitu ottaa käyttöön.\n" "Kotihakemistosi tiedoston %s/last-record2_default.utf8 sisällön loppu ei ole " "'\\n" "'. Eli. väärä tekstimuoto.\n" "Korjaa tiedosto tai poista se manuaalisesti ja käynnistä IBus uudelleen." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Asetukset - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Määritä Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "syöttötila" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Vaihda syöttötila" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Puolileveä Katakana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latina" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Leveä Latina" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Kirjoitusmenetelmä" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Vaihda kirjoitusmenetelmä" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Peukalo muutos" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Segmenttitila" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Vaihda muunnostila" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Useita segmenttejä" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Yksittäinen segmentti" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Välitön muunnos (useita segmenttejä)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Välitön muunnos (yksittäinen segmentti)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Yleiset" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Komento" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Kuvaus" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Sisääntulo" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Yksittäinen" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Oikeudet" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Oletus" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Peruspaketit" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "" #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "" #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "" #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "" #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "" #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "" #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Peru" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Avaa" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_OK" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "" #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "" #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "" #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Ei yhtään" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Älä tee mitään" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Tyhjennä" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Tehdä" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "_Pysäytä" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Kirjoitusmenetelmä:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Oletus" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Muokkaa" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Näppäimistön asettelu" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Kirjoitusmenetelmä" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Peukalo muutos" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Näytä" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Lisää" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Poista" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Ylös" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Alas" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Tietoja" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Sulje" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Avain koodi:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Muokkaajat:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Hallinta" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Päivitä" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "P_oista" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Kuvaus:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" "Ilkka Tuohela, 2004-2005\n" "Jan Kuparinen\n" "http://gnome.fi/" ibus-anthy-1.5.17/po/fr.po000066400000000000000000000744111475510605700152760ustar00rootroot00000000000000# French translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # Julien Humbert , 2009-2014, 2020. # fujiwara , 2015. #zanata # Jean-Baptiste Holcroft , 2016. #zanata # José Fournier , 2016. #zanata # José Fournier , 2018. #zanata # fujiwara , 2019. #zanata # Léane GRASSER , 2024. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2024-06-27 09:36+0000\n" "Last-Translator: Léane GRASSER \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" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.5.5\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Méthode de saisie du japonais" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" "La méthode de saisie Anthy est conçue pour saisir des textes en japonais." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Les méthodes de saisie sont des systèmes permettant aux utilisateurs de " "saisir des langues complexes. Elles sont nécessaires parce que les trop " "nombreux caractères de ces langues ne peuvent être disposés sur des claviers " "classiques." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Méthode de saisie Anthy" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Anthy n’a pas pu être activée.\n" "Le contenu à la fin du fichier %s/last-record2_default.utf8 de votre dossier " "personnel n’est pas « \\n" " ». C.-à-d. pas dans un format texte correct.\n" "Veuillez corriger le fichier ou le supprimer manuellement, puis redémarrez " "IBus." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Préférences – Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Configurer Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Mode de saisie" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Changer de mode de saisie" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana demi-chasse" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latin pleine largeur" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Méthode de saisie" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Changer de méthode de saisie" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Thumb shift" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Mode segments" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Changer de méthode de conversion" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segments multiples" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segments simples" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Conversion immédiate (segments multiples)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Conversion immédiate (segments simples)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Mode dictionnaire" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Changer de dictionnaire" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Dictionnaire – Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Dico" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Configurer les dictionnaires" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Modifier les dictionnaires" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Lancer l’utilitaire de modification de dictionnaires" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Ajouter de nouveaux mots" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Ajouter de nouveaux mots au dictionnaire" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Paramètres généraux" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Conversion des codes postaux" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Symboles" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Anciens caractères" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Ère" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Émoticône" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "Configuration d’IBus Anthy" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Configuration du moteur IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Étiquette du menu" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Commande" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Raccourci" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Description" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Incorporé" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Unique" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Caractère(s) d’entrée" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Caractère(s) de sortie" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Entrée" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Unique" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Gauche" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Droite" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Personnaliser la table des touches Romaji" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "Table des touches _Romaji :" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "Caractère(s) de _sortie" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Par défaut" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Personnaliser la table des touches Kana" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Table des touches _Kana :" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Disposition clavier japonais" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "Disposition clavier américain" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Personnaliser la table des touches de la méthode Thumb Shift" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "Table des touches de la méthode Thumb _Shift :" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Caractère(s) de s_ortie unique(s)" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Basique" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "Extension de touches NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "Extension de touches NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "Extension de touches NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "Extension de touches FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "Extension de touches FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "Extension de touches FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "Extension de touches FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "Extension de touches FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "Extension de touches FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "Le fichier que vous avez sélectionné a déjà été ajouté : " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "Le fichier que vous avez sélectionné n’existe pas : " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "Le fichier que vous avez sélectionné est un dossier : " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" "Vous ne pouvez pas ajouter de dictionnaire dans le dossier privé d’Anthy : " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "Le chemin du fichier sélectionné est incorrect : " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "Le fichier xml du moteur n’existe pas : " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "La disposition clavier Anthy a changé. Veuillez redémarrer ibus pour charger " "la nouvelle disposition." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Veuillez spécifier les caractères d’entrée" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Veuillez spécifier les caractères de sortie" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "Veuillez spécifier les caractères Thumb Shift Gauche" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "Veuillez spécifier les caractères Thumb Shift Droit" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Votre touche personnalisée n’est assignée à aucune section. Cela est sans " "doute un bogue." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "Le fichier que vous avez sélectionné n’existe pas : " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Ouvrir un fichier de dictionnaire" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "A_nnuler" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Ouvrir" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Modifier le fichier de dictionnaire" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_OK" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "Le fichier que vous avez sélectionné est incorrect." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "Vous ne pouvez pas supprimer le dictionnaire système." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "Le fichier que vous avez sélectionné n’est pas bon." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Voir le fichier de dictionnaire" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Veuillez appuyer sur une touche (ou une combinaison de touches)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "La fenêtre se fermera lorsque la touche sera relâchée" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "« keysym » invalide" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Ce « keysym » n’est pas valide" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Aucune" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Extension de touches FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Extension de touches FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Conserver les codes du pavé numérique" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Convertir les caractères" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Ne rien faire" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Convertir automatiquement" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Validation automatique" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Effacer" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Valider" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Garder" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Configuration – IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "Mode d’E_ntrée :" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "Méthode de Sa_isie :" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Mode de _Conversion :" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Configuration initiale" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Visibilité du menu sur l’icône d’état" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Style de _Ponctuation :" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Style de _Symboles :" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Touches du pa_vé numérique :" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "Comportement _lors de la ponctuation :" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Comportement à la perte du _focus :" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Comportement" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "_Taille de la fenêtre de la liste des candidats :" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Convertir les s_ymboles en symboles d’une seule colonne de largeur" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Convertir les ch_iffres en chiffres d’une seule colonne de largeur" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Convertir les _espaces en espaces d’une seule colonne de largeur" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Permuter entre les modes « Hiragana » et « Latin » avec la touche Maj et la " "touche Hiragana-Katakana en pré-édition" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Autres options" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Conversion" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Raccourcis _claviers :" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Par dé_faut" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Modifier" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Affectation des touches" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Romaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Disposition c_lavier :" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Disposition clavier" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Méthode de saisie" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Touche Thumb Shift _Gauche :" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Touche Thumb Shift _Droite :" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Utiliser la disposition clavier système pour la méthode d’entrée" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Utilise la disposition clavier utilisée par XKB pour l’IME" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Disposition de la _Méthode de saisie :" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Redémarrez IBus lorsque vous changer la disposition clavier système" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Redémarrez IBus lorsque vous changer la configuration XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Arrangements des Touches Additionnelles :" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "« ~ », « 『 », « ¢ », « £ », etc. peuvent être tapés avec la touche Thumb " "Shift" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Vous n’avez pas besoin de reconfigurer la disposition clavier système pour " "profiter des « Arrangements des Touches Additionnelles », puisque cette " "option ne change la disposition de la méthode de saisie que lorsque la " "méthode de saisie est activée." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Vous n’avez pas besoin de reconfigurer XKB, puisque cette option ne change " "que la disposition de l’IME lorsque l’IME est activé." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "Activer les « semi-_voiced sound mark » avec la touche Majuscule" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Majuscule peut imprimer Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Table des touches Thumb _Shift :" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Disposition Thumb Shift" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Thumb Shift" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "Commande permettant l’éd_ition du dictionnaire :" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Commande permettant l’a_jout d’un mot :" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Configuration du dictionnaire par défaut" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Voir" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Ajouter" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Supprimer" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Monter" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Vous pouvez changer l’ordre dans la barre de langue" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Descendre" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Dictionnaires supplémentaires" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Dictionnaire" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "À propos" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Fermer" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Modifier le raccourci" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Code de touche :" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modificateur :" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lternatif" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Majuscule" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "A_ctualiser" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Caractère(s) d’_entrée" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Caractères de s_ortie" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Thumb Shift _Gauche" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Thumb Shift D_roit" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Retirer" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Label court :" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Description :" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" "_Utiliser votre dictionnaire tout seul lors du changement de dictionnaire" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "Inclur_e votre dictionnaire dans le dictionnaire système" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Activer la conversion inversée" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Le moteur Anthy pour la plateforme de saisie IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Julien Humbert " ibus-anthy-1.5.17/po/hu.po000066400000000000000000000701441475510605700153020ustar00rootroot00000000000000# Hungarian translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2021 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Balázs Meskó , 2020. # Balázs Meskó , 2021. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2021-11-02 15:05+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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.8\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Japán beviteli mód" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Az Anthy beviteli mód japán szöveg bevitelére lett tervezve." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "A beviteli módok olyan gépelési rendszerek, amelyekkel a felhasználók " "összetett nyelveken írhatnak. Azért szükségesek, mert ezek túl sok karaktert " "tartalmaznak ahhoz, hogy hagyományos billentyűzettel vigyék be őket." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Anthy beviteli mód" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Az Anthy nem engedélyezhető.\n" "A saját mappájában lévő %s/last-record2_default.utf8 fájl tartalmának vége " "nem „\\n" "”. Tehát nem helyes szövegformátum.\n" "Javítsa a fájlt vagy távolítsa el kézzel, és indítsa újra az IBust." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Beállítások – Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Az Anthy beállítása" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Beviteli mód" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Beviteli mód váltása" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Fél szélességű katakana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Széles latin" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Gépelési mód" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Gépelési mód váltása" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Rómadzsi" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Szegmens mód" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Átalakítási mód váltása" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Több szegmens" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Egy szegmens" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Azonnali átalakítás (több szegmens)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Azonnali átalakítás (egy szegmens)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Szótár mód" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Szótár váltása" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Szótár – Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Szótár" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Szótárak beállítása" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Szótárak szerkesztése" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Szótár eszköz indítása" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Szavak hozzáadása" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Szavak hozzáadása a szótárhoz" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Általános" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Irányítószám átalakítás" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Szimbólum" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Régi karakterstílus" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Éra" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emodzsi" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "IBus Anthy beállítások" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Az IBus Anthy motor beállítása" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Menücímke" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Parancs" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Gyorsbillentyű" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Leírás" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Beágyazott" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Egyetlen" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Beviteli karakterek" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Kimeneti karakterek" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Bemenet" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Egyetlen" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Bal" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Jobb" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Rómadzsi billentyűtábla testreszabása" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "_Rómadzsi billentyűtábla:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "_Kimeneti karakterek" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Alapértelmezett" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Kana billentyűtábla testreszabása" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "_Kana billentyűtábla:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Japán billentyűzetkiosztás" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "U.S.A. billentyűzetkiosztás" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Egyetlen _kimenetű karakterek" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Alap" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "NICOLA-J billentyűkiegészítés" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "NICOLA-A billentyűkiegészítés" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "NICOLA-F billentyűkiegészítés" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J billentyűkiegészítés" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A billentyűkiegészítés" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F billentyűkiegészítés" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J billentyűkiegészítés" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A billentyűkiegészítés" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F billentyűkiegészítés" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "A választott fájl már hozzá lett adva: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "A választott fájl nem létezik: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "A választott fájl egy könyvtár: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Nem adhat hozzá könyvtárakat az anthy privát könyvtárához: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "A fájlútvonal helytelen: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "A motor XML-fájlja nem létezik: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Az Anthy billentyűzetkiosztás megváltozott. A kiosztás újratöltéséhez " "indítsa újra az ibust." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Adja meg a beviteli karaktereket" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Adja meg a kimeneti karaktereket" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Az egyéni billentyű nincs hozzárendelve egyetlen szakaszhoz sem. Ez lehet, " "hogy programhiba." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "A fájl nem létezik: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Szótárfájl megnyitása" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Mégse" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "Me_gnyitás" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Szótárfájl szerkesztése" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_OK" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "A választott fájl nem helyes." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "Nem törölheti a rendszerkönyvtárat." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "A fájl nem helyes." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Szótárfájl megtekintése" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Nyomjon meg egy billentyűt (vagy billentyűkombinációt)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "A párbeszédablak bezárul, ha felengedi a gombot" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "Érvénytelen billentyűszimbólum" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "A billentyűszimbólum nem érvényes" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Nincs" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 billentyűkiegészítés" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 billentyűkiegészítés" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Számbillentyűzet kódjainak megtartása" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Karakterek átalakítása" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Ne tegyen semmit" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Automatikus átalakítás" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Automatikus véglegesítés" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Törlés" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Véglegesítés" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Visszatartás" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Beállítások – IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Beviteli mód:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Gépelési mód:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Átalakítási _mód:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Kezdeti beállítások" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Menü láthatósága az állapotikonon" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_Pont stílusa:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Szimbó_lum stílusa:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Számbillentyűzet _billentyűtípusa:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Pont viselkedése:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Viselkedés a _fókusz elvesztésekor:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Viselkedés" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Cél_ablak oldalmérete:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Egyéb" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Átalakítás" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Gyorsbillentyű _típusa:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_Alapértelmezett" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "Sz_erkesztés" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Billentyűtársítás" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Rómadzsi" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Billentyűzet_kiosztás:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Billentyűzetkiosztás" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Gépelési mód" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_Bal hüvelykujjas Shift billentyű:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "_Jobb hüvelyujjas Shift billentyű:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "Bemenet_i mód kiosztásának beállítása a rendszer billentyűzetkiosztására" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "IM kiosztás beállítása az XKB kiosztásként" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Bemeneti _mód kiosztása:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Az IBus újraindítása, ha módosítja a billentyűzetkiosztást" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Az IBus újraindítása, ha módosítja az XKB-t" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_További billentyűelrendezések:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "A(z) „~”, „『”, „¢”, „£” stb. a hüvelyujjas Shit billentyűvel írható ki" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Nem kell újrakonfigurálnia a rendszer billentyűzetkiosztását a „További " "billentyűelrendezések” használatához, hiszen ez a beállítás csak akkor " "változtat a bemeneti mód kiszotásán, ha a bemeneti mód be van kapcsolva." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Nem kell újrakonfigurálnia az XKB-t, hiszen ez a beállítás csak akkor " "módosítja az IM kiosztást, ha az IM be van kapcsolva." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "A félhangos hangjelzés _engedélyezése a Shift billentyűvel" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "Hozzá_adás" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Törlés" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Fel" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Le" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Névjegy" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Bezárás" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Eltávolítás" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" ibus-anthy-1.5.17/po/ibus-anthy.pot000066400000000000000000000566551475510605700171500ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.16\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2025-02-17 17:13+0900\n" "PO-Revision-Date: 2025-02-17 17:12+0900\n" "Last-Translator: Takao Fujiwara \n" "Language-Team: Source\n" "Language: English\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "" #: data/ibus-anthy.appdata.xml.in:11 data/ibus-anthy.appdata.xml.in:39 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" #: data/ibus-anthy.appdata.xml.in:14 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "" #: engine/python2/engine.py:219 engine/python3/engine.py:220 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" #: engine/python2/engine.py:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "" #: engine/python2/engine.py:269 engine/python3/engine.py:270 msgid "Configure Anthy" msgstr "" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:306 engine/python2/engine.py:394 #: engine/python2/engine.py:461 engine/python2/engine.py:537 #: engine/python2/engine.py:909 engine/python2/engine.py:940 #: engine/python2/engine.py:964 engine/python2/engine.py:993 #: engine/python2/engine.py:1055 engine/python3/engine.py:307 #: engine/python3/engine.py:395 engine/python3/engine.py:462 #: engine/python3/engine.py:538 engine/python3/engine.py:904 #: engine/python3/engine.py:935 engine/python3/engine.py:959 #: engine/python3/engine.py:988 engine/python3/engine.py:1050 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "" #: engine/python2/engine.py:307 engine/python2/engine.py:910 #: engine/python3/engine.py:308 engine/python3/engine.py:905 #: setup/python2/main.py:405 setup/python3/main.py:409 msgid "Input mode" msgstr "" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "" #: engine/python2/engine.py:395 engine/python2/engine.py:941 #: engine/python2/engine.py:965 engine/python3/engine.py:396 #: engine/python3/engine.py:936 engine/python3/engine.py:960 #: setup/python2/main.py:408 setup/python3/main.py:412 msgid "Typing method" msgstr "" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "" #: engine/python2/engine.py:462 engine/python2/engine.py:994 #: engine/python3/engine.py:463 engine/python3/engine.py:989 #: setup/python2/main.py:411 setup/python3/main.py:415 msgid "Segment mode" msgstr "" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "" #: engine/python2/engine.py:496 engine/python3/engine.py:497 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "" #: engine/python2/engine.py:505 engine/python3/engine.py:506 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "" #: engine/python2/engine.py:538 engine/python2/engine.py:1056 #: engine/python3/engine.py:539 engine/python3/engine.py:1051 #: setup/python2/main.py:414 setup/python3/main.py:418 msgid "Dictionary mode" msgstr "" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "Set up IBus Anthy engine" msgstr "" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:592 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 msgid "_Output Chars" msgstr "" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "" #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "" #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "" #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "" #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "" #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1278 setup/python3/main.py:1312 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: setup/python2/main.py:1374 setup/python2/main.py:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "" #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "" #: setup/python2/main.py:1388 setup/python2/main.py:1394 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "" #: setup/python2/main.py:1395 setup/python2/main.py:1485 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1478 setup/python3/setup.ui:2181 msgid "_OK" msgstr "" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "" #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "" #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "" #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "" #: setup/python2/main.py:1666 setup/python2/main.py:1687 #: setup/python3/main.py:1659 setup/python3/main.py:1680 msgid "This keysym is not valid" msgstr "" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" ibus-anthy-1.5.17/po/id.po000066400000000000000000000706531475510605700152670ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Andika Triwidada , 2024. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.15\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2023-08-22 13:02+0900\n" "PO-Revision-Date: 2024-10-29 09:58+0000\n" "Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian \n" "Language: id\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: Weblate 5.7.2\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Metode masukan bahasa Jepang" #: data/ibus-anthy.appdata.xml.in:11 data/ibus-anthy.appdata.xml.in:39 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Metode masukan Anthy dirancang untuk memasukkan teks bahasa Jepang." #: data/ibus-anthy.appdata.xml.in:14 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Metode masukan adalah sistem pengetikan yang memungkinkan pengguna untuk " "memasukkan bahasa yang kompleks. Mereka diperlukan karena ini berisi terlalu " "banyak karakter untuk hanya ditata pada papan ketik tradisional." #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Lihat daftar rilis hulu." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Metode Masukan Anthy" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Tidak bisa mengaktifkan Anthy.\n" "Akhir konten berkas %s/last-record2_default.utf8 di direktori beranda Anda " "bukan '\\n" "'. Yaitu format teks tidak benar.\n" "Silakan perbaiki berkas atau hapus secara manual dan mulai ulang IBus." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Preferensi - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Konfigurasikan Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:409 msgid "Input mode" msgstr "Mode masukan" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Beralih mode masukan" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana lebar setengah" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latin Lebar" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:412 msgid "Typing method" msgstr "Metode pengetikan" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Beralih metode pengetikan" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Shift jempol" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:415 msgid "Segment mode" msgstr "Mode segmen" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Beralih mode konversi" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Beberapa segmen" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmen tunggal" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Konversi langsung (beberapa segmen)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Konversi langsung (segmen tunggal)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:418 msgid "Dictionary mode" msgstr "Mode kamus" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Beralih kamus" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Kamus - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Kamus" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Mengonfigurasi kamus" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Sunting kamus" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Luncurkan alat kamus" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Tambah kata" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Tambah kata ke kamus" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Umum" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Konversi Kode Pos" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Simbol" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Gaya Karakter Lama" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "Penyiapan IBus Anthy" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Siapkan mesin IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Label menu" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Perintah" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Pintasan" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Deskripsi" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Embd" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Tgal" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Karakter Masukan" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Karakter Keluaran" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Masukan" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Tunggal" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Kiri" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Kanan" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Sesuaikan Tabel Tombol Romaji" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:592 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "Tabel Tombol _Romaji:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 msgid "_Output Chars" msgstr "K_arakter Keluaran" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Baku" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Sesuaikan Tabel Tombol Kana" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Tabel Tombol _Kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Tata Letak Papan Tik Jepang" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Tata Letak Papan Tik AS" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Sesuaikan Tabel Tombol Shift Jempol" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Tabel Tombol Shift Jempol:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Karakter Kelu_aran Tunggal" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Dasar" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Ekstensi tombol NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Ekstensi tombol NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Ekstensi tombol NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Ekstensi tombol FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Ekstensi tombol FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Ekstensi tombol FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Ekstensi tombol FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Ekstensi tombol FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Ekstensi tombol FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Berkas yang Anda pilih telah ditambahkan: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "Berkas yang Anda pilih tidak ada: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Berkas yang Anda pilih adalah direktori: " #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Anda tidak dapat menambahkan kamus di direktori pribadi anthy: " #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "Path berkas Anda tidak bagus: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Berkas xml mesin tidak ada: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Tata letak papan tik Anthy berubah. Silakan mulai ulang ibus untuk memuat " "ulang tata letak." #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Harap tentukan Karakter Masukan" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Harap tentukan Karakter Keluaran" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Harap tentukan Karakter Shift Jempol Kiri" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Harap tentukan Karakter Shift Jempol Kanan" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1278 setup/python3/main.py:1312 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "Kunci ubahan Anda tidak ditetapkan di bagian mana pun. Mungkin bug." #: setup/python2/main.py:1374 setup/python2/main.py:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "Berkas Anda tidak ada: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Buka Berkas Kamus" #: setup/python2/main.py:1388 setup/python2/main.py:1394 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Batal" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Buka" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Sunting Berkas Kamus" #: setup/python2/main.py:1395 setup/python2/main.py:1485 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1478 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_OK" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "Berkas yang Anda pilih tidak benar." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Anda tidak dapat menghapus kamus sistem." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Berkas Anda tidak bagus." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Lihat Berkas Kamus" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Silakan tekan tombol (atau kombinasi tombol)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "Dialog akan ditutup saat tombol dilepaskan" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Keysym tidak valid" #: setup/python2/main.py:1666 setup/python2/main.py:1687 #: setup/python3/main.py:1659 setup/python3/main.py:1680 msgid "This keysym is not valid" msgstr "Keysym ini tidak valid" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Nihil" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Ekstensi tombol FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Ekstensi tombol FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Pertahankan kode numpad" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Konversikan karakter" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Jangan lakukan apa pun" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Konversi otomatis" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Commit secara otomatis" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Bersihkan" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Commit" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Tahan" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Penyiapan - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "Mode Mas_ukan:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "Metode Penge_tikan:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "_Mode Konversi:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Pengaturan Awal" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Visibilitas Menu pada Ikon Status" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Gaya _Perioda:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Gaya Simbo_l:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Tipe _Tombol Numpad:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Perilaku pada Perioda:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Perilaku saat _Fokus Lepas:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Perilaku" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Ukuran Halaman _Jendela Kandidat:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Konversikan _simbol dengan lebar satu kolom" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Konversikan a_ngka dengan lebar satu kolom" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Kon_versikan spasi dengan lebar satu kolom" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Alihkan \"Hiragana\" dan \"Latin\" dengan _tombol Shift dan tombol Hiragana–" "Katakana di prasunting" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Lainnya:" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Konversi" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Jenis Pinta_san:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_Baku" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Sunting" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Pengikatan Tombol" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Romaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Tata _letak papan ketik:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Tata letak papan ketik" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Metode Mengetik" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Tombol Shift Jempo_l Kiri:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "_Tombol Shift Jempol Kanan:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Sesuaikan tata letak metode masukan ke tata letak papan t_ik sistem" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Sesuaikan tata letak IM ke tata letak XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Tata Letak _Metode Masukan:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Mulai ulang IBus saat Anda mengubah tata letak papan ketik" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Mulai ulang IBus saat Anda mengubah XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "Pengaturan Kunci T_ambahan:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "'~', ''', '¢', '£' dan seterusnya dapat dikeluarkan dengan tombol Shift " "Jempol" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Anda tidak perlu mengonfigurasi ulang tata letak papan ketik sistem untuk " "\"Pengaturan Tombol Tambahan\" karena opsi ini mengubah tata letak metode " "masukan hanya jika metode masukan diaktifkan." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Anda tidak perlu mengonfigurasi ulang XKB karena opsi ini mengubah tata " "letak IM hanya dengan IM aktif." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "Fungsikan tanda suara s_emi-suara dengan tombol Shift" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift dapat mengeluarkan Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Tabel Tombol _Shift Jempol:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Tata Letak Shift Jempol" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Shift Jempol" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "P_erintah Sunting Kamus:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Perintah T_ambah Kata:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Konfigurasi Kamus Baku" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Tilik" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "T_ambah" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Hapus" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Naik" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Anda dapat mengubah urutan pada bilah bahasa" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Turun" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Kamus Diperluas" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Kamus" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Tentang" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Tutup" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Sunting Pintasan" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Kode Tombol:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Pengubah:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lternatif" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Shift" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "Sega_rkan" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Karakter Mas_ukan" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Karakter Kelu_aran" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Shift Jempo_l Kiri" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Shift Jempol Ka_nan" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Buang" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "Label _Pendek:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Deskripsi:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "G_unakan kamus Anda sendiri dengan beralih kamus" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "Tanamkan kamus Anda di kamus sist_em" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Fungsikan konve_rsi balik" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Mesin Anthy untuk platform masukan IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Andika Triwidada , 2024." ibus-anthy-1.5.17/po/ja.po000066400000000000000000000740321475510605700152600ustar00rootroot00000000000000# Japanese translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # UTUMI Hirosi , 2008 # fujiwara , 2016. #zanata # fujiwara , 2017. #zanata # fujiwara , 2019. #zanata # 김인수 , 2022. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2025-02-17 16:13+0900\n" "PO-Revision-Date: 2025-02-17 16:14+0900\n" "Last-Translator: 김인수 \n" "Language-Team: Japanese \n" "Language: ja\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: Weblate 4.14.1\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "日本語入力方式" #: data/ibus-anthy.appdata.xml.in:11 data/ibus-anthy.appdata.xml.in:39 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Anthy 入力方式は日本語のテキストを入力するために設計されています。" #: data/ibus-anthy.appdata.xml.in:14 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "入力方式はユーザーに複雑な言語入力を可能にさせる文字入力システムです。入力方" "式は従来のキーボード上で簡単に割り当てられた多くの文字を含んでいるために必要" "とされています。" #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "入力方式" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "日本語" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "開発元のリリースリストを見てください。" #: engine/python2/engine.py:219 engine/python3/engine.py:220 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Anthy を有効にできませんでした。\n" "ホームディレクトリにある %s/last-record2_default.utf8 の中身の最後が '\\n' で" "ありません。つまり正しくないテキストフォーマットです。\n" "手動でファイルを修正するか削除して IBus をリスタートしてください。" #: engine/python2/engine.py:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "設定 - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 msgid "Configure Anthy" msgstr "Anthy を構成します" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:306 engine/python2/engine.py:394 #: engine/python2/engine.py:461 engine/python2/engine.py:537 #: engine/python2/engine.py:909 engine/python2/engine.py:940 #: engine/python2/engine.py:964 engine/python2/engine.py:993 #: engine/python2/engine.py:1055 engine/python3/engine.py:307 #: engine/python3/engine.py:395 engine/python3/engine.py:462 #: engine/python3/engine.py:538 engine/python3/engine.py:904 #: engine/python3/engine.py:935 engine/python3/engine.py:959 #: engine/python3/engine.py:988 engine/python3/engine.py:1050 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:307 engine/python2/engine.py:910 #: engine/python3/engine.py:308 engine/python3/engine.py:905 #: setup/python2/main.py:405 setup/python3/main.py:409 msgid "Input mode" msgstr "入力モード" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "入力モードを切り替えます" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "ひらがな" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "カタカナ" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "半角カタカナ" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "英数" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "全角英数" #: engine/python2/engine.py:395 engine/python2/engine.py:941 #: engine/python2/engine.py:965 engine/python3/engine.py:396 #: engine/python3/engine.py:936 engine/python3/engine.py:960 #: setup/python2/main.py:408 setup/python3/main.py:412 msgid "Typing method" msgstr "入力タイプ" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "入力タイプを切り替えます" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "ローマ字" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "かな" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "親指シフト" #: engine/python2/engine.py:462 engine/python2/engine.py:994 #: engine/python3/engine.py:463 engine/python3/engine.py:989 #: setup/python2/main.py:411 setup/python3/main.py:415 msgid "Segment mode" msgstr "文節モード" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "変換モードを切り替えます" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "連文節" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "単文節" #: engine/python2/engine.py:496 engine/python3/engine.py:497 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "逐次変換 (連文節)" #: engine/python2/engine.py:505 engine/python3/engine.py:506 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "逐次変換 (単文節)" #: engine/python2/engine.py:538 engine/python2/engine.py:1056 #: engine/python3/engine.py:539 engine/python3/engine.py:1051 #: setup/python2/main.py:414 setup/python3/main.py:418 msgid "Dictionary mode" msgstr "辞書モード" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "辞書を切り替えます" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "辞書 - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "辞" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "辞書を構成します" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "辞書を編集する" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "辞書ツールを起動する" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "単語を追加する" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "辞書に単語を追加する" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "一般" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "郵便番号変換" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "記号" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "旧字体" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "年号" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "絵文字" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "IBus Anthy の設定" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "Set up IBus Anthy engine" msgstr "IBus Anthy エンジンの設定" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "メニューラベル" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "コマンド" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "ショートカット" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "説明" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "組" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "単" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "入力文字" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "出力文字" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "入力" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "単" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "左" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "右" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "ローマ字キーテーブルのカスタマイズ" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:592 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "ローマ字キーテーブル(_R):" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 msgid "_Output Chars" msgstr "出力文字(_O)" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "デフォルト" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "かなキーテーブルのカスタマイズ" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "かなキーテーブル(_K):" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "日本語キーボードレイアウト" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "U.S. キーボードレイアウト" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "親指シフトキーテーブルのカスタマイズ" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "親指シフトキーテーブル(_T):" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "単出力文字(_O)" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "基本" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "NICOLA-J キー拡張" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "NICOLA-A キー拡張" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "NICOLA-F キー拡張" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J キー拡張" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A キー拡張" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F キー拡張" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J キー拡張" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A キー拡張" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F キー拡張" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "選択したファイルはすでに追加されています: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "選択したファイルは存在しません: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "選択したファイルはディレクトリです: " #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Anthy 私用ディレクトリにあるファイルを追加することはできません: " #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "ファイルパスはよくないです: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "エンジン xml ファイルは存在しません: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Anthy キーボードレイアウトが変更されました。レイアウトを再読み込みするために " "ibus を再起動してください。" #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "入力文字を指定してください" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "出力文字を指定してください" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "左親指シフト文字を指定してください" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "右親指シフト文字を指定してください" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1278 setup/python3/main.py:1312 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "カスタムキーがどのセクションにも割り当てられていません。たぶんバグです。" #: setup/python2/main.py:1374 setup/python2/main.py:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "ファイルは存在しません: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "辞書ファイルを開く" #: setup/python2/main.py:1388 setup/python2/main.py:1394 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "キャンセル(_C)" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "開く(_O)" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "辞書ファイルの編集" #: setup/python2/main.py:1395 setup/python2/main.py:1485 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1478 setup/python3/setup.ui:2181 msgid "_OK" msgstr "OK(_O)" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "選択したファイルは正しくありません。" #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "システム辞書を削除することはできません。" #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "ファイルは良くないです。" #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "辞書ファイルの表示" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "キー (もしくはキーの組み合わせ) を入力してください" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "このダイアログはキーリリース時に閉じられます" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "無効なキーシンボル" #: setup/python2/main.py:1666 setup/python2/main.py:1687 #: setup/python3/main.py:1659 setup/python3/main.py:1680 msgid "This keysym is not valid" msgstr "このキーシンボルは有効ではありません" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "なし" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 キー拡張" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 キー拡張" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "テンキーコードのまま" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "文字を変換" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "何もしない" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "自動変換" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "自動確定" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "消去" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "確定" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "保持" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "IBus-Anthy の設定" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "入力モード(_I):" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "入力タイプ(_T):" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "変換モード(_M):" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "初期値の設定" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "ステータスアイコン上のメニューの表示" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "句読点スタイル(_P):" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "記号スタイル(_L):" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "テンキータイプ(_K):" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "句読点入力時の動作(_B):" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "フォーカスアウト時の動作(_F):" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "動作" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "候補ウインドウの項目数(_W):" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "記号を半角で変換する(_S)" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "数字を半角で変換する(_N)" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "空白を半角で変換する(_V)" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "前変換候補において「ひらがな」と「英数」をシフトキーとひらがな・カタカナキー" "で切り替える(_T)" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "その他" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "変換" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "ショートカットタイプ(_S):" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "デフォルト(_F)" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "編集(_E)" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "キー割り当て" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "ローマ字" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "かな" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "キーボードレイアウト(_L):" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "キーボードレイアウト" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "入力タイプ" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "左親指シフトキー(_L):" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "右親指シフトキー(_T):" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "インプットメソッドレイアウトをシステムキーボードレイアウトに合わせる(_I)" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "IM レイアウトを XKB レイアウトに合わせる" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "インプットメソッドレイアウト(_M):" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "キーボードレイアウトを変更するときは IBus をリスタートしてください" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "XKB を変更するときは IBus を再起動してください" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "追加のキー割り当て(_A):" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "親指シフトキーで '~', '『', '¢', '£' 等を出力することが可能です" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "このオプションはインプットメソッドがオンの場合にインプットメソッドレイアウト" "のみを変更するので「追加のキー割り当て」のためにシステムキーボードレイアウト" "を再構成する必要はありません。" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "このオプションは IM オンで IM レイアウトのみを変更するので XKB を再構成する必" "要はありません。" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "シフトキーで半濁点を可能にする(_E)" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "清音 + シフトで半濁音を出力することが可能です" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "親指シフトキーテーブル(_S):" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "親指シフトレイアウト" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "親指シフト" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "辞書の編集コマンド(_E):" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "単語の追加コマンド(_A):" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "デフォルト辞書の構成" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "表示(_V)" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "追加(_A)" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "削除(_D)" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "上へ(_U)" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "言語バー上で順序を変更することが可能です" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "下へ(_D)" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "拡張辞書" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "辞書" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "情報" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "閉じる(_C)" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "ショートカットの編集" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "キーコード:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "キー修飾:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lt" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Shift" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "更新(_R)" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "入力文字(_I)" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "出力文字(_O)" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "左親指シフト(_L)" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "右親指シフト(_R)" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "削除(_R)" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "短ラベル(_S):" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "説明(_D):" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "辞書を切り替えることで選択した辞書を単独で使用する(_U)" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "システム辞書にユーザー辞書を組み込む(_E)" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "逆変換を可能にする(_R)" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "IBus 入力プラットフォーム用 Anthy エンジン" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "UTUMI Hirosi " ibus-anthy-1.5.17/po/ka.po000066400000000000000000000626611475510605700152660ustar00rootroot00000000000000# Georgian translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Temuri Doghonadze , 2022. # Weblate Translation Memory , 2024. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2024-03-03 14:36+0000\n" "Last-Translator: Weblate Translation Memory \n" "Language-Team: Georgian \n" "Language: ka\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 5.4\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "შეყვანის იაპონური მეთოდი" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "შეყვანის რეჟიმი" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "შეყვანის რეჟიმის გადართვა" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "ჰირაგანა" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "კატაკანა" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "ლათინური" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "ფართო ლათინური" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "აკრეფის მეთოდი" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "აკრეფის მეთოდის გადართვა" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "რომაჯი" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "კანა" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "ზოგადი" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "სიმბოლო" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "ერა" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "ემოჯი" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "ბრძანება" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "მალსახმობი" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "აღწერა" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "შეყვანა" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "ერთი" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "მარცხენა" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Right" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "ნაგულისხმები" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "საბაზისო" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "" #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "" #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "" #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "" #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "" #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "" #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_გაუქმება" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_გახსნა" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_დიახ" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "" #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "" #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "" #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "დააწექით ღილაკს (ან მათ კომბინაციას)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "ეს ფანჯარა დაიხურება, როცა ღილაკს გაუშვებთ" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "არაფერი" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "არაფრის გაკეთება" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "სუფთა ცა" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "გადაცემა" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "შეყოვნება" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_აკრეფის მეთოდი:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "კანდიდატის ფანჯრის გვერდის ზომა:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "სხვა" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "გადაყვანა" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_ნაგულისხმები" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_დამუშავება" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "კლავიატურის ბმები" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "აკრეფის მეთოდი" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_ხედი" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_დამატება" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_წაშლა" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "მაღლა" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_დაბლა" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "ლექსიკონი" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "შესახებ" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "და_კეტვა" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "ღილაკის კოდი:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "მოდიფიკატორები:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "_კონტროლი" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_განახლება" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "მოცილება" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_აღწერა:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "მთარგმნელის_შესახებ" ibus-anthy-1.5.17/po/kab.po000066400000000000000000000577521475510605700154350ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2025 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # ButterflyOfFire , 2024. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.15\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2023-08-22 13:02+0900\n" "PO-Revision-Date: 2024-12-10 09:43+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Kabyle \n" "Language: kab\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 5.8.4\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "" #: data/ibus-anthy.appdata.xml.in:11 data/ibus-anthy.appdata.xml.in:39 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" #: data/ibus-anthy.appdata.xml.in:14 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "" #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:409 msgid "Input mode" msgstr "Askar n unekcum" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:412 msgid "Typing method" msgstr "" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:415 msgid "Segment mode" msgstr "" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:418 msgid "Dictionary mode" msgstr "" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Beddel asegzawal" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Rnu awalen imaynuten" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Amatu" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Izamulen" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Imujit" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Anegzum" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Aglam" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:592 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 msgid "_Output Chars" msgstr "" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Amezwer" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "" #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "" #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "" #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "" #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "" #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1278 setup/python3/main.py:1312 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: setup/python2/main.py:1374 setup/python2/main.py:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "" #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "" #: setup/python2/main.py:1388 setup/python2/main.py:1394 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "Sefsex (_C)" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "Ldi (_O)" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "" #: setup/python2/main.py:1395 setup/python2/main.py:1485 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1478 setup/python3/setup.ui:2181 msgid "_OK" msgstr "IH (_O)" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "" #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "" #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "" #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "" #: setup/python2/main.py:1666 setup/python2/main.py:1687 #: setup/python3/main.py:1659 setup/python3/main.py:1680 msgid "This keysym is not valid" msgstr "" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Ula yiwen" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Sfeḍ" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "Ẓr_eg" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "Rnu (_A)" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "Kkes (_D)" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Asegzawal" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Ɣef" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "Mdel (_C)" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "Kkes (_R)" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "Aglam (_D):" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Athmane Mokraoui " ibus-anthy-1.5.17/po/ko.po000066400000000000000000000712531475510605700153010ustar00rootroot00000000000000# Korean translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2023 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # simmon , 2021. # 김인수 , 2022. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2022-11-29 12:19+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" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.14.2\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "일본어 입력 방법" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Anthy 입력 방법은 일본어 문자 입력을 위해 설계되었습니다." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "입력 방법은 복잡한 언어를 입력하는 사용자가 이용하는 입력시스템입니다. 너무 많은 문자로 인하여 전통적인 키보드에 배치하여 간결하게 만들 " "수 없기 때문에 입력 방법이 필요합니다." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Anthy 입력 방법" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Anthy를 활성화 할 수 없습니다.\n" "홈 디렉토리에 있는 %s/last-record2_default.utf8 파일 내용의 끝은 '\\n" "'이 아닙니다. 올바른 문자 형식이 아닙니다.\n" "파일을 수정하거나 수동으로 제거해 주고, IBUS를 재시작 하세요." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "참조 - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Anthy 설정하기" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "입력 모드" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "선택 입력 모드" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "히라가나" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "카다카나" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "반각 가타카나" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "라틴" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "전각라틴" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "입력 방법" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "전환 입력 방법" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "로마지" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "카나" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "엄지 시프트" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "구획 모드" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "전환 변환 모드" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "다중 구획" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "단일 구획" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "즉시 변환 (다중 구획)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "즉시 변환 (단일 구획)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "사전 모드" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "전환 사전" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "사전 - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "사전" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "사전 구성" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "사전 수정" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "사전 도구 실행" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "단어 추가" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "사전에 단어 추가" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "일반" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "우편 코드 변환" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "상징" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "이전 문자 형태" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "연대" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "이모지" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "IBUS Anthy 설정" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "IBUS Anthy 엔진 설정" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "메뉴 표시" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "명령" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "손쉬운 방법" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "설명" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "임베디드" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "단일" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "입력 문자" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "출력 문자" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "입력" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "단일" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "좌측" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "우측" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "사용자 지정 로마지 키 테이블" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "_로마지 키 테이블:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "_출력 문자" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "설정" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "사용자 지정 카나 키 테이블" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "_카나 키 테이블:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "일본어 키보드 레이아웃" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "U.S. 키보드 레이아웃" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "사용자 지정 엄지 쉬프트 키 테이블" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_엄지 쉬프트 키 테이블:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "단일_출력 문자" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "기본" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "NICOLA-J 키 확장" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "NICOLA-A 키 확장" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "NICOLA-F 키 확장" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J 키 확장" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A 키 확장" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F 키 확장" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J 키 확장" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A 키 확장" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "KMV KB611-F 키 확장" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "선택한 파일은 이미 추가되어져 있습니다.: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "선택한 파일이 존재하지 않습니다.: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "선택한 파일은 디렉토리입니다.: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "anthy 개인 디렉토리에 사전을 추가 할 수 없습니다.: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "파일경로가 좋지 않습니다.: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "엔진 xml 파일은 존재하지 않습니다.: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "Anthy 키보드 레이아웃이 변화 되었습니다. 레이아웃을 적재하기 위해서 ibus를 재시작 해주세요." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "입력 문자를 명시해 주세요" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "출력문자를 명시해 주세요" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "왼쪽 엄지 쉬프트 문자를 명시해 주세요" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "우측 엄지 쉬프트 문자를 명시해 주세요" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "사용자 키가 어떤 부분에도 할당 되지 않습니다. 버그일지 모릅니다." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "파일이 존재하지 않습니다.: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "사전 파일 열기" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_취소" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_열기" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "사전 파일 수정" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "확인(_O)" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "선택된 파일이 올바르지 않습니다." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "시스템 사전을 지울 수 없습니다." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "파일이 좋지 않습니다." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "사전 파일 보기" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "키 (또는 키 조합)를 누르세요" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "대화상자는 키를 놓으면 닫힐 것입니다" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "잘못된 keysym" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "이 keysym은 유효하지 않습니다" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "없음" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 키 확장" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 키 확장" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "숫자패드 코드 유지" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "문자 변환" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "아무 것도 하지 않기" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "자동 변환" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "자동 반영" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "비우기" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "수행" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "중지" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Setup-IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_입력 모드:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_입력 방법:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "전환_방법:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "초기 설정" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "상태 아이콘의 메뉴 가시성" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_ 기간 형태:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "기호_형태:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "숫자패드_키 형태:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_기간별 행위:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "초점 _행동:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "행동" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Candidate_Window 페이지 크기:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "하나의 열 너비로 Convert_symbols" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "하나의 열 너비로 Convert_numbers" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "하나의 열 너비로 공백 Con_vert" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "사전 편집에서 쉬프트 키와 히라카나-카타카나 키를 사용하는 Swi_tch \"히라가나\"및 \"라틴\"" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "기타" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "변환" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_바로가기 유형:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "De_fault" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_수정" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "키 바인딩" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "로마지" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "카나" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "키보드_레이아웃:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "키보드 레이아웃" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "입력 방법" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_왼쪽 엄지 쉬프트 키:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "우측_엄지 쉬프트 키:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "조정_시스템 키보드 레이아웃에 입력 방법 레이아웃" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "IM 레이아웃에 XKB 레이아웃으로 조정" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "입력_방법 레이아웃:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "키보드 레이아웃을 변환 할 때에는 IBUS를 재시작 하세요" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "KXB를 변환 할 때에는 IBUS를 재시작 하세요" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_추가 키 배열:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "'~', '『', '¢', '£ 등은 엄지 쉬프트 키로 출력 할 수 있습니다" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "이 선택은 입력 방식을 켜져 있는 경우에만 입력 방식 레이아웃을 변환 한 후에 \"추가 키 배열\"를 위하여 시스템 키보드 레이아웃을 " "재구성 할 필요가 없습니다." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "이 선택은 IM을 켠 후에만 IM 레이아웃을 변경 하므로 XKB를 재설정 할 필요가 없습니다." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_쉬프트 키로 반-음성 소리 확인 활성화" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + 쉬프트는 Handakuon을 출력 할 수 있습니다" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "엄지_쉬프트 키 테이블:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "엄지 쉬프트 레이아웃" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "엄지 쉬프트" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "_사전 명령 편집:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "_단어 명령 추가:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "기본 사전 구성" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_보기" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_추가" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_삭제" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_위" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "언어 입력 도구모음에서 순서를 변경 할 수 있습니다" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_아래" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "확장 사진" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "사전" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "정보" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_닫기" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "바로가기 수정" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "키 코드:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "수정자:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lternate" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_쉬프트" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Refresh" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "_입력 문자" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "_출력 문자" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_좌측 엄지 쉬프트" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_우측 엄지 쉬프트" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_제거" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_짧은 라벨:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_설명:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_사전 전환과 함게 사전만 사용" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "시스템 사전에 사전 포함" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "_역 변환 활성화" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "IBUS 입력 기술환경을 위한 Anthy 엔진" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "simmon " ibus-anthy-1.5.17/po/pt_BR.po000066400000000000000000000766401475510605700157030ustar00rootroot00000000000000# Portuguese (Brazil) translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2020 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # Marco Aurélio Krause , 2015. #zanata # Rafael Fontenelle , 2020. # Henrique Roberto Gattermann Mittelstaedt , 2020. msgid "" msgstr "" "Project-Id-Version: ibus-anthy master\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2017-03-17 13:26+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" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Weblate 4.3.2\n" #: ../data/ibus-anthy.appdata.xml.in.h:1 msgid "Japanese input method" msgstr "Método de entrada japonês" #: ../data/ibus-anthy.appdata.xml.in.h:2 msgid "The Anthy input method is designed for entering Japanese text." msgstr "O método de entrada Anthy é projetado para digitar texto em japonês." #: ../data/ibus-anthy.appdata.xml.in.h:3 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Os métodos de entrada são sistemas de digitação que permitem aos usuários " "insirirem idiomas complexos. Eles são necessários porque contêm muitos " "caracteres para serem simplesmente dispostos em um teclado tradicional." #: ../engine/python2/default.xml.in.in.h:1 #: ../engine/python3/default.xml.in.in.h:1 msgid "Anthy Input Method" msgstr "Método de entrada Anthy" #: ../engine/python2/engine.py:207 ../engine/python3/engine.py:208 msgid "" "Could not enable Anthy.\n" "The end of the content of the file .anthy/last-record2_default.utf8 in your " "home directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Não foi possível ativar o Anthy.\n" "O final do conteúdo do arquivo .anthy/last-record2_default.utf8 no seu " "diretório pessoal não é '\\n" "'. Significa um formato de texto incorreto.\n" "Corrija o arquivo ou remova-o manualmente e reinicie o IBus." #: ../engine/python2/engine.py:255 ../engine/python3/engine.py:256 #: ../setup/python2/main.py:416 ../setup/python3/main.py:421 msgid "Preferences - Anthy" msgstr "Preferências - Anthy" #: ../engine/python2/engine.py:257 ../engine/python3/engine.py:258 msgid "Configure Anthy" msgstr "Configurar o Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: ../engine/python2/engine.py:294 ../engine/python2/engine.py:382 #: ../engine/python2/engine.py:449 ../engine/python2/engine.py:525 #: ../engine/python2/engine.py:856 ../engine/python2/engine.py:884 #: ../engine/python2/engine.py:908 ../engine/python2/engine.py:934 #: ../engine/python2/engine.py:996 ../engine/python3/engine.py:295 #: ../engine/python3/engine.py:383 ../engine/python3/engine.py:450 #: ../engine/python3/engine.py:526 ../engine/python3/engine.py:851 #: ../engine/python3/engine.py:879 ../engine/python3/engine.py:903 #: ../engine/python3/engine.py:929 ../engine/python3/engine.py:991 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: ../engine/python2/engine.py:295 ../engine/python2/engine.py:857 #: ../engine/python3/engine.py:296 ../engine/python3/engine.py:852 #: ../setup/python2/main.py:401 ../setup/python3/main.py:406 msgid "Input mode" msgstr "Modo de entrada" #: ../engine/python2/engine.py:301 ../engine/python3/engine.py:302 msgid "Switch input mode" msgstr "Alternar o modo de entrada" #: ../engine/python2/engine.py:311 ../engine/python3/engine.py:312 #: ../setup/python2/setup.ui.h:1 ../setup/python3/setup.ui.h:1 msgid "Hiragana" msgstr "Hiragana" #: ../engine/python2/engine.py:320 ../engine/python3/engine.py:321 #: ../setup/python2/setup.ui.h:2 ../setup/python3/setup.ui.h:2 msgid "Katakana" msgstr "Katakana" #: ../engine/python2/engine.py:329 ../engine/python3/engine.py:330 #: ../setup/python2/setup.ui.h:3 ../setup/python3/setup.ui.h:3 msgid "Halfwidth Katakana" msgstr "Katakana meia largura" #: ../engine/python2/engine.py:338 ../engine/python3/engine.py:339 #: ../setup/python2/setup.ui.h:4 ../setup/python3/setup.ui.h:4 msgid "Latin" msgstr "Latim" #: ../engine/python2/engine.py:347 ../engine/python3/engine.py:348 #: ../setup/python2/setup.ui.h:5 ../setup/python3/setup.ui.h:5 msgid "Wide Latin" msgstr "Latim amplo" #: ../engine/python2/engine.py:383 ../engine/python2/engine.py:885 #: ../engine/python2/engine.py:909 ../engine/python3/engine.py:384 #: ../engine/python3/engine.py:880 ../engine/python3/engine.py:904 #: ../setup/python2/main.py:404 ../setup/python3/main.py:409 msgid "Typing method" msgstr "Método de digitação" #: ../engine/python2/engine.py:389 ../engine/python3/engine.py:390 msgid "Switch typing method" msgstr "Alternar método de digitação" #: ../engine/python2/engine.py:399 ../engine/python3/engine.py:400 #: ../setup/python2/setup.ui.h:12 ../setup/python3/setup.ui.h:12 msgid "Romaji" msgstr "Romaji" #: ../engine/python2/engine.py:408 ../engine/python3/engine.py:409 #: ../setup/python2/setup.ui.h:13 ../setup/python3/setup.ui.h:13 msgid "Kana" msgstr "Kana" #: ../engine/python2/engine.py:417 ../engine/python3/engine.py:418 #: ../setup/python2/setup.ui.h:14 ../setup/python3/setup.ui.h:14 msgid "Thumb shift" msgstr "Thumb shift" #: ../engine/python2/engine.py:450 ../engine/python2/engine.py:935 #: ../engine/python3/engine.py:451 ../engine/python3/engine.py:930 #: ../setup/python2/main.py:407 ../setup/python3/main.py:412 msgid "Segment mode" msgstr "Modo de segmento" #: ../engine/python2/engine.py:456 ../engine/python3/engine.py:457 msgid "Switch conversion mode" msgstr "Alternar modo de conversão" #: ../engine/python2/engine.py:466 ../engine/python3/engine.py:467 #: ../setup/python2/setup.ui.h:15 ../setup/python3/setup.ui.h:15 msgid "Multiple segment" msgstr "Segmento múltiplo" #: ../engine/python2/engine.py:475 ../engine/python3/engine.py:476 #: ../setup/python2/setup.ui.h:16 ../setup/python3/setup.ui.h:16 msgid "Single segment" msgstr "Segmento único" #: ../engine/python2/engine.py:484 ../engine/python3/engine.py:485 #: ../setup/python2/setup.ui.h:17 ../setup/python3/setup.ui.h:17 msgid "Immediate conversion (multiple segment)" msgstr "Conversão imediata (segmento múltiplo)" #: ../engine/python2/engine.py:493 ../engine/python3/engine.py:494 #: ../setup/python2/setup.ui.h:18 ../setup/python3/setup.ui.h:18 msgid "Immediate conversion (single segment)" msgstr "Conversão imediata (segmento único)" #: ../engine/python2/engine.py:526 ../engine/python2/engine.py:997 #: ../engine/python3/engine.py:527 ../engine/python3/engine.py:992 #: ../setup/python2/main.py:410 ../setup/python3/main.py:415 msgid "Dictionary mode" msgstr "Modo dicionário" #: ../engine/python2/engine.py:532 ../engine/python3/engine.py:533 msgid "Switch dictionary" msgstr "Alternar dicionário" #: ../engine/python2/engine.py:615 ../engine/python3/engine.py:615 #: ../setup/python2/main.py:413 ../setup/python3/main.py:418 msgid "Dictionary - Anthy" msgstr "Dicionário - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: ../engine/python2/engine.py:621 ../engine/python3/engine.py:620 msgid "Dic" msgstr "Dic" #: ../engine/python2/engine.py:628 ../engine/python3/engine.py:627 msgid "Configure dictionaries" msgstr "Configurar dicionários" #: ../engine/python2/engine.py:638 ../engine/python3/engine.py:637 msgid "Edit dictionaries" msgstr "Editar dicionários" #: ../engine/python2/engine.py:640 ../engine/python3/engine.py:639 msgid "Launch the dictionary tool" msgstr "Iniciar a ferramenta de dicionário" #: ../engine/python2/engine.py:647 ../engine/python3/engine.py:646 msgid "Add words" msgstr "Adicionar palavras" #: ../engine/python2/engine.py:649 ../engine/python3/engine.py:648 msgid "Add words to the dictionary" msgstr "Adicionar palavras no dicionário" #: ../setup/python2/anthyprefs.py.in:1105 ../setup/python2/setup.ui.h:36 #: ../setup/python3/anthyprefs.py.in:1098 ../setup/python3/setup.ui.h:36 msgid "General" msgstr "Geral" #: ../setup/python2/anthyprefs.py.in:1116 #: ../setup/python3/anthyprefs.py.in:1109 msgid "Zip Code Conversion" msgstr "Conversão de código postal" #: ../setup/python2/anthyprefs.py.in:1127 #: ../setup/python3/anthyprefs.py.in:1120 msgid "Symbol" msgstr "Símbolo" #: ../setup/python2/anthyprefs.py.in:1138 #: ../setup/python3/anthyprefs.py.in:1131 msgid "Old Character Style" msgstr "Estilo de caractere antigo" #: ../setup/python2/anthyprefs.py.in:1148 #: ../setup/python3/anthyprefs.py.in:1141 msgid "Era" msgstr "Era" #: ../setup/python2/anthyprefs.py.in:1158 #: ../setup/python3/anthyprefs.py.in:1151 msgid "Emoji" msgstr "Emoji" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:1 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:1 msgid "IBus Anthy Setup" msgstr "Configuração de IBus Anthy" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:2 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:2 msgid "Set up IBus Anthy engine" msgstr "Configure o motor de IBus Anthy" #. self.__run_message_dialog needs self.__builder. #: ../setup/python2/main.py:133 ../setup/python3/main.py:136 msgid "ibus is not running." msgstr "ibus não está em execução." #: ../setup/python2/main.py:188 ../setup/python3/main.py:191 msgid "Menu label" msgstr "Rótulo de menu" #: ../setup/python2/main.py:207 ../setup/python3/main.py:210 msgid "Command" msgstr "Comando" #: ../setup/python2/main.py:211 ../setup/python3/main.py:214 msgid "Shortcut" msgstr "Atalho" #: ../setup/python2/main.py:256 ../setup/python3/main.py:259 msgid "Description" msgstr "Descrição" #. Translators: "Embd" is an abbreviation of "embedded". #: ../setup/python2/main.py:264 ../setup/python3/main.py:267 msgid "Embd" msgstr "Embt" #. Translators: "Sgl" is an abbreviation of "single". #: ../setup/python2/main.py:272 ../setup/python3/main.py:275 msgid "Sgl" msgstr "Uni" #: ../setup/python2/main.py:447 ../setup/python2/main.py:483 #: ../setup/python3/main.py:452 ../setup/python3/main.py:488 msgid "Input Chars" msgstr "Caracteres de entrada" #: ../setup/python2/main.py:449 ../setup/python2/main.py:485 #: ../setup/python3/main.py:454 ../setup/python3/main.py:490 msgid "Output Chars" msgstr "Caracteres de saída" #: ../setup/python2/main.py:531 ../setup/python3/main.py:536 msgid "Input" msgstr "Entrada" #: ../setup/python2/main.py:533 ../setup/python3/main.py:538 msgid "Single" msgstr "Único" #: ../setup/python2/main.py:535 ../setup/python3/main.py:540 msgid "Left" msgstr "Esquerda" #: ../setup/python2/main.py:537 ../setup/python3/main.py:542 msgid "Right" msgstr "Direita" #: ../setup/python2/main.py:619 ../setup/python3/main.py:624 msgid "Customize Romaji Key Table" msgstr "Personalizar tabela de teclas Romanji" #: ../setup/python2/main.py:620 ../setup/python2/setup.ui.h:54 #: ../setup/python3/main.py:625 ../setup/python3/setup.ui.h:54 msgid "_Romaji Key Table:" msgstr "Tabela de teclas _Romanji:" #: ../setup/python2/main.py:621 ../setup/python2/main.py:627 #: ../setup/python3/main.py:626 ../setup/python3/main.py:632 msgid "_Output Chars" msgstr "Caracteres de _saída" #: ../setup/python2/main.py:622 ../setup/python2/main.py:1122 #: ../setup/python2/main.py:1270 ../setup/python2/setup.ui.h:27 #: ../setup/python3/main.py:627 ../setup/python3/main.py:1116 #: ../setup/python3/main.py:1264 ../setup/python3/setup.ui.h:27 msgid "Default" msgstr "Padrão" #: ../setup/python2/main.py:625 ../setup/python3/main.py:630 msgid "Customize Kana Key Table" msgstr "Personalizar tabela de teclas Kana" #: ../setup/python2/main.py:626 ../setup/python2/setup.ui.h:56 #: ../setup/python3/main.py:631 ../setup/python3/setup.ui.h:56 msgid "_Kana Key Table:" msgstr "Tabela de teclas _Kana:" #: ../setup/python2/main.py:628 ../setup/python3/main.py:633 msgid "Japanese Keyboard Layout" msgstr "Layout do idioma japonês" #: ../setup/python2/main.py:629 ../setup/python3/main.py:634 msgid "U.S. Keyboard Layout" msgstr "Layout de teclado dos EUA" #: ../setup/python2/main.py:632 ../setup/python3/main.py:637 msgid "Customize Thumb Shift Key Table" msgstr "Personalizar teclado de teclas Thumb Shift" #: ../setup/python2/main.py:633 ../setup/python3/main.py:638 msgid "_Thumb Shift Key Table:" msgstr "Tabelas de teclas _Thumb Shift:" #: ../setup/python2/main.py:634 ../setup/python3/main.py:639 msgid "Single _Output Chars" msgstr "Caracteres de _saída única" #: ../setup/python2/main.py:635 ../setup/python3/main.py:640 msgid "Base" msgstr "Base" #: ../setup/python2/main.py:636 ../setup/python3/main.py:641 msgid "NICOLA-J key extension" msgstr "Extensão de teclas NICOLA-J" #: ../setup/python2/main.py:637 ../setup/python3/main.py:642 msgid "NICOLA-A key extension" msgstr "Extensão de teclas NICOLA-A" #: ../setup/python2/main.py:638 ../setup/python3/main.py:643 msgid "NICOLA-F key extension" msgstr "Extensão de teclas NICOLA-F" #: ../setup/python2/main.py:639 ../setup/python3/main.py:644 msgid "FMV KB231-J key extension" msgstr "Extensão de teclas FMV KB231-J" #: ../setup/python2/main.py:640 ../setup/python3/main.py:645 msgid "FMV KB231-A key extension" msgstr "Extensão de teclas FMV KB231-A" #: ../setup/python2/main.py:641 ../setup/python3/main.py:646 msgid "FMV KB231-F key extension" msgstr "Extensão de teclas FMV KB231-F" #: ../setup/python2/main.py:642 ../setup/python3/main.py:647 msgid "FMV KB611-J key extension" msgstr "Extensão de teclas FMV KB611-J" #: ../setup/python2/main.py:643 ../setup/python3/main.py:648 msgid "FMV KB611-A key extension" msgstr "Extensão de teclas FMV KB611-A" #: ../setup/python2/main.py:644 ../setup/python3/main.py:649 msgid "FMV KB611-F key extension" msgstr "Extensão de teclas FMV KB611-F" #: ../setup/python2/main.py:788 ../setup/python3/main.py:793 msgid "Your choosed file has already been added: " msgstr "Seu arquivo escolhido já foi adicionado: " #: ../setup/python2/main.py:792 ../setup/python3/main.py:797 msgid "The file you have chosen does not exist: " msgstr "O arquivo que você escolheu não existe: " #: ../setup/python2/main.py:796 ../setup/python3/main.py:801 msgid "Your choosed file is a directory: " msgstr "Seu arquivo escolhido é um diretório: " #: ../setup/python2/main.py:800 ../setup/python3/main.py:805 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Você não pode adicionar dicionários no diretório privado do anthy: " #: ../setup/python2/main.py:807 ../setup/python3/main.py:812 msgid "Your file path is not good: " msgstr "O arquivo do seu caminho não é válido: " #: ../setup/python2/main.py:986 ../setup/python3/main.py:989 msgid "The engine xml file does not exist: " msgstr "O arquivo de xml de motor não existe: " #: ../setup/python2/main.py:1102 ../setup/python3/main.py:1096 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Layout de teclado do Anthy foi alterado. Reinicie o ibus para recarregar o " "layout." #: ../setup/python2/main.py:1231 ../setup/python3/main.py:1225 msgid "Confirmation" msgstr "Confirmação" #: ../setup/python2/main.py:1233 ../setup/python3/main.py:1227 msgid "You are about to close the setup dialog, is that OK?" msgstr "Você está prestes a encerrar o diálogo de configuração. Está correta?" #: ../setup/python2/main.py:1248 ../setup/python3/main.py:1242 msgid "Notice!" msgstr "Atenção!" #: ../setup/python2/main.py:1250 ../setup/python3/main.py:1244 msgid "" "You are about to close the setup dialog without saving your changes, is that " "OK?" msgstr "" "Você está prestes a encerrar o diálogo de configuração sem salvar suas " "alterações. Está correta?" #: ../setup/python2/main.py:1371 ../setup/python3/main.py:1365 msgid "Please specify Input Chars" msgstr "Especifique os caracteres de entrada" #: ../setup/python2/main.py:1374 ../setup/python3/main.py:1368 msgid "Please specify Output Chars" msgstr "Especifique os caracteres de saída" #: ../setup/python2/main.py:1377 ../setup/python3/main.py:1371 msgid "Please specify Left Thumb Shift Chars" msgstr "Especifique caracteres de Thumb Shift esquerdo" #: ../setup/python2/main.py:1380 ../setup/python3/main.py:1374 msgid "Please specify Right Thumb Shift Chars" msgstr "Especifique caracteres de Thumb Shift direito" #: ../setup/python2/main.py:1393 ../setup/python2/main.py:1437 #: ../setup/python3/main.py:1387 ../setup/python3/main.py:1431 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Sua tecla personalizada não está atribuída a uma seção. Talvez seja um bug." #: ../setup/python2/main.py:1503 ../setup/python2/main.py:1590 #: ../setup/python3/main.py:1497 ../setup/python3/main.py:1584 msgid "Your file does not exist: " msgstr "Seu arquivo não existe: " #: ../setup/python2/main.py:1513 ../setup/python3/main.py:1507 msgid "Open Dictionary File" msgstr "Abrir arquivo de dicionário" #: ../setup/python2/main.py:1516 ../setup/python2/main.py:1522 #: ../setup/python2/setup.ui.h:90 ../setup/python3/main.py:1510 #: ../setup/python3/main.py:1516 ../setup/python3/setup.ui.h:90 msgid "_Cancel" msgstr "_Cancelar" #: ../setup/python2/main.py:1517 ../setup/python3/main.py:1511 msgid "_Open" msgstr "_Abrir" #: ../setup/python2/main.py:1520 ../setup/python3/main.py:1514 msgid "Edit Dictionary File" msgstr "Editar arquivo de dicionário" #: ../setup/python2/main.py:1523 ../setup/python2/main.py:1618 #: ../setup/python2/setup.ui.h:91 ../setup/python3/main.py:1517 #: ../setup/python3/main.py:1612 ../setup/python3/setup.ui.h:91 msgid "_OK" msgstr "_OK" #: ../setup/python2/main.py:1534 ../setup/python3/main.py:1528 msgid "Your choosed file is not correct." msgstr "Seu arquivo escolhido não está correto." #: ../setup/python2/main.py:1563 ../setup/python3/main.py:1557 msgid "You cannot delete the system dictionary." msgstr "Você não pode excluir o dicionário de sistema." #: ../setup/python2/main.py:1586 ../setup/python3/main.py:1580 msgid "Your file is not good." msgstr "Seu arquivo não está correto." #: ../setup/python2/main.py:1616 ../setup/python3/main.py:1610 msgid "View Dictionary File" msgstr "Ver arquivo de dicionário" #: ../setup/python2/main.py:1787 ../setup/python3/main.py:1781 msgid "Please press a key (or a key combination)" msgstr "Pressione uma tecla (ou uma combinação de teclas)" #: ../setup/python2/main.py:1788 ../setup/python3/main.py:1782 msgid "The dialog will be closed when the key is released" msgstr "O diálogo será fechado quando a chave é liberada" #: ../setup/python2/main.py:1808 ../setup/python2/main.py:1829 #: ../setup/python3/main.py:1802 ../setup/python3/main.py:1823 msgid "Invalid keysym" msgstr "símbolo de tecla (keysym) inválido" #: ../setup/python2/main.py:1809 ../setup/python2/main.py:1830 #: ../setup/python3/main.py:1803 ../setup/python3/main.py:1824 msgid "This keysym is not valid" msgstr "Este símbolo de teclas não é válido" #: ../setup/python2/setup.ui.h:6 ../setup/python3/setup.ui.h:6 msgid "NICOLA-J" msgstr "NICOLA-J" #: ../setup/python2/setup.ui.h:7 ../setup/python3/setup.ui.h:7 msgid "NICOLA-A" msgstr "NICOLA-A" #: ../setup/python2/setup.ui.h:8 ../setup/python3/setup.ui.h:8 msgid "NICOLA-F" msgstr "NICOLA-F" #: ../setup/python2/setup.ui.h:9 ../setup/python3/setup.ui.h:9 msgid "None" msgstr "Nenhum" #: ../setup/python2/setup.ui.h:10 ../setup/python3/setup.ui.h:10 msgid "FMV KB231 key extension" msgstr "Extensão de teclas FMV KB231" #: ../setup/python2/setup.ui.h:11 ../setup/python3/setup.ui.h:11 msgid "FMV KB611 key extension" msgstr "Extensão de teclas FMV KB611" #: ../setup/python2/setup.ui.h:19 ../setup/python3/setup.ui.h:19 msgid "Keep numpad codes" msgstr "Manter código de teclado numérico" #: ../setup/python2/setup.ui.h:20 ../setup/python3/setup.ui.h:20 msgid "Convert characters" msgstr "Converter caracteres" #: ../setup/python2/setup.ui.h:21 ../setup/python3/setup.ui.h:21 msgid "Do nothing" msgstr "Fazer nada" #: ../setup/python2/setup.ui.h:22 ../setup/python3/setup.ui.h:22 msgid "Automatically convert" msgstr "Converter automaticamente" #: ../setup/python2/setup.ui.h:23 ../setup/python3/setup.ui.h:23 msgid "Automatically commit" msgstr "Enviar automaticamente" #: ../setup/python2/setup.ui.h:24 ../setup/python3/setup.ui.h:24 msgid "Clear" msgstr "Limpar" #: ../setup/python2/setup.ui.h:25 ../setup/python3/setup.ui.h:25 msgid "Commit" msgstr "Enviar" #: ../setup/python2/setup.ui.h:26 ../setup/python3/setup.ui.h:26 msgid "Hold" msgstr "Manter" #: ../setup/python2/setup.ui.h:28 ../setup/python3/setup.ui.h:28 msgid "ATOK" msgstr "ATOK" #: ../setup/python2/setup.ui.h:29 ../setup/python3/setup.ui.h:29 msgid "Wnn" msgstr "Wnn" #: ../setup/python2/setup.ui.h:30 ../setup/python3/setup.ui.h:30 msgid "Setup - IBus-Anthy" msgstr "Configuração - IBus-Anthy" #: ../setup/python2/setup.ui.h:31 ../setup/python3/setup.ui.h:31 msgid "_Input Mode:" msgstr "Modo de _entrada:" #: ../setup/python2/setup.ui.h:32 ../setup/python3/setup.ui.h:32 msgid "_Typing Method:" msgstr "Método de _digitação:" #: ../setup/python2/setup.ui.h:33 ../setup/python3/setup.ui.h:33 msgid "Conversion _Mode:" msgstr "_Modo de conversão:" #: ../setup/python2/setup.ui.h:34 ../setup/python3/setup.ui.h:34 msgid "Initial Setting" msgstr "Configuração inicial" #: ../setup/python2/setup.ui.h:35 ../setup/python3/setup.ui.h:35 msgid "Menu Visibility on Status Icon" msgstr "Visibilidade do menu no ícone de status" #: ../setup/python2/setup.ui.h:37 ../setup/python3/setup.ui.h:37 msgid "_Period Style:" msgstr "Estilo do _ponto:" #: ../setup/python2/setup.ui.h:38 ../setup/python3/setup.ui.h:38 msgid "Symbo_l Style:" msgstr "Estilo de símbo_lo:" #: ../setup/python2/setup.ui.h:39 ../setup/python3/setup.ui.h:39 msgid "Numpad _Key Type:" msgstr "Tipo de tecla de teclado _numérico:" #: ../setup/python2/setup.ui.h:40 ../setup/python3/setup.ui.h:40 msgid "_Behavior on Period:" msgstr "C_omportamento no ponto:" #: ../setup/python2/setup.ui.h:41 ../setup/python3/setup.ui.h:41 msgid "Behavior on _Focus Out:" msgstr "Comportamento ao retirar _foco:" #: ../setup/python2/setup.ui.h:42 ../setup/python3/setup.ui.h:42 msgid "Behavior" msgstr "Comportamento" #: ../setup/python2/setup.ui.h:43 ../setup/python3/setup.ui.h:43 msgid "Candidate _Window Page Size:" msgstr "Tamanho da página da _janela de candidatos:" #: ../setup/python2/setup.ui.h:44 ../setup/python3/setup.ui.h:44 msgid "Convert _symbols with the one column width" msgstr "Converter _símbolos com a largura de uma coluna" #: ../setup/python2/setup.ui.h:45 ../setup/python3/setup.ui.h:45 msgid "Convert _numbers with the one column width" msgstr "Converter _números com a largura de uma coluna" #: ../setup/python2/setup.ui.h:46 ../setup/python3/setup.ui.h:46 msgid "Con_vert spaces with the one column width" msgstr "Con_verter espaços com a largura de uma coluna" #: ../setup/python2/setup.ui.h:47 ../setup/python3/setup.ui.h:47 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Al_ternar \"Hiragana\" e \"Latim\" com a tecla shift com a tecla Hiragana–" "Katakana na pré-edição" #: ../setup/python2/setup.ui.h:48 ../setup/python3/setup.ui.h:48 msgid "Other" msgstr "Outro" #: ../setup/python2/setup.ui.h:49 ../setup/python3/setup.ui.h:49 msgid "Conversion" msgstr "Conversão" #: ../setup/python2/setup.ui.h:50 ../setup/python3/setup.ui.h:50 msgid "_Shortcut Type:" msgstr "Atalho_s de teclado:" #: ../setup/python2/setup.ui.h:51 ../setup/python3/setup.ui.h:51 msgid "De_fault" msgstr "_Padrão" #: ../setup/python2/setup.ui.h:52 ../setup/python3/setup.ui.h:52 msgid "_Edit" msgstr "_Editar" #: ../setup/python2/setup.ui.h:53 ../setup/python3/setup.ui.h:53 msgid "Key Binding" msgstr "Associações de tecla" #: ../setup/python2/setup.ui.h:55 ../setup/python3/setup.ui.h:55 msgid "Romaji" msgstr "Romaji" #: ../setup/python2/setup.ui.h:57 ../setup/python3/setup.ui.h:57 msgid "Kana" msgstr "Kana" #: ../setup/python2/setup.ui.h:58 ../setup/python3/setup.ui.h:58 msgid "Keyboad _layout:" msgstr "_Layout de teclado:" #: ../setup/python2/setup.ui.h:59 ../setup/python3/setup.ui.h:59 msgid "Keyboard layout" msgstr "Layout de teclado" #: ../setup/python2/setup.ui.h:60 ../setup/python3/setup.ui.h:60 msgid "Typing Method" msgstr "Método de digitação" #: ../setup/python2/setup.ui.h:61 ../setup/python3/setup.ui.h:61 msgid "_Left Thumb Shift Key:" msgstr "Tecla Thumb Shift _esquerda:" #: ../setup/python2/setup.ui.h:62 ../setup/python3/setup.ui.h:62 msgid "Right _Thumb Shift Key:" msgstr "Tecla Thumb Shift _direita:" #: ../setup/python2/setup.ui.h:63 ../setup/python3/setup.ui.h:63 msgid "Adjust _input method layout to system keyboard layout" msgstr "Ajustar layout de método de _entrada ao layout de teclado do sistema" #: ../setup/python2/setup.ui.h:64 ../setup/python3/setup.ui.h:64 msgid "Adjust IM layout to XKB layout" msgstr "Ajustar layout do IM para layout do XKB" #: ../setup/python2/setup.ui.h:65 ../setup/python3/setup.ui.h:65 msgid "Input _Method Layout:" msgstr "Layout do _método de entrada:" #: ../setup/python2/setup.ui.h:66 ../setup/python3/setup.ui.h:66 msgid "Restart IBus when you change the keyboard layout" msgstr "Reiniciar o IBus quando você alterar o layout de teclado" #: ../setup/python2/setup.ui.h:67 ../setup/python3/setup.ui.h:67 msgid "Restart IBus when you change XKB" msgstr "Reiniciar IBus quando você alterar o XKB" #: ../setup/python2/setup.ui.h:68 ../setup/python3/setup.ui.h:68 msgid "_Additional Key Arrangement:" msgstr "Arranjo de Teclas _Adicional:" #: ../setup/python2/setup.ui.h:69 ../setup/python3/setup.ui.h:69 msgid "" "'~', '『', '¢', '£' and so on can be output with " "Thumb Shift key" msgstr "" "\"~\", \"『\", \"¢\", \"£\" e outros podem ser saída " "com tecla Thumb Shift" #: ../setup/python2/setup.ui.h:70 ../setup/python3/setup.ui.h:70 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Você não precisa reconfigurar o layout do teclado do sistema para \"Arranjo " "de teclas adicional\", pois esta opção altera o layout do método de entrada " "apenas se o método de entrada estiver ativado." #: ../setup/python2/setup.ui.h:71 ../setup/python3/setup.ui.h:71 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Você não precisa reconfigurar o XKB, pois esta opção altera o layout da IM " "apenas com a IM ativada." #: ../setup/python2/setup.ui.h:72 ../setup/python3/setup.ui.h:72 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Ativar a marca de som com semi-voz com a tecla Shift" #: ../setup/python2/setup.ui.h:73 ../setup/python3/setup.ui.h:73 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift pode emitir Handakuon" #: ../setup/python2/setup.ui.h:74 ../setup/python3/setup.ui.h:74 msgid "Thumb _Shift Key Table:" msgstr "Tabela de teclas Thumb _Shift:" #: ../setup/python2/setup.ui.h:75 ../setup/python3/setup.ui.h:75 msgid "Thumb Shift Layout" msgstr "Layout de Thumb Shift" #: ../setup/python2/setup.ui.h:76 ../setup/python3/setup.ui.h:76 msgid "Thumb Shift" msgstr "Thumb Shift" #: ../setup/python2/setup.ui.h:77 ../setup/python3/setup.ui.h:77 msgid "_Edit Dictionary Command:" msgstr "Comando de _Editar de Dicionário:" #: ../setup/python2/setup.ui.h:78 ../setup/python3/setup.ui.h:78 msgid "_Add Word Command:" msgstr "Comando de _adicionar palavra:" #: ../setup/python2/setup.ui.h:79 ../setup/python3/setup.ui.h:79 msgid "Default Dictionary Configuration" msgstr "Configuração de dicionário padrão" #: ../setup/python2/setup.ui.h:80 ../setup/python3/setup.ui.h:80 msgid "_View" msgstr "_Ver" #: ../setup/python2/setup.ui.h:81 ../setup/python3/setup.ui.h:81 msgid "_Add" msgstr "_Adicionar" #: ../setup/python2/setup.ui.h:82 ../setup/python3/setup.ui.h:82 msgid "_Delete" msgstr "_Excluir" #: ../setup/python2/setup.ui.h:83 ../setup/python3/setup.ui.h:83 msgid "_Up" msgstr "A_cima" #: ../setup/python2/setup.ui.h:84 ../setup/python3/setup.ui.h:84 msgid "You can change the order on language bar" msgstr "Você pode alterar a ordem na barra de idiomas" #: ../setup/python2/setup.ui.h:85 ../setup/python3/setup.ui.h:85 msgid "_Down" msgstr "A_baixo" #: ../setup/python2/setup.ui.h:86 ../setup/python3/setup.ui.h:86 msgid "Extended Dictionaries" msgstr "Dicionários estendidos" #: ../setup/python2/setup.ui.h:87 ../setup/python3/setup.ui.h:87 msgid "Dictionary" msgstr "Dicionário" #: ../setup/python2/setup.ui.h:88 ../setup/python3/setup.ui.h:88 msgid "About" msgstr "Sobre" #: ../setup/python2/setup.ui.h:89 ../setup/python3/setup.ui.h:89 msgid "_Apply" msgstr "_Aplicar" #: ../setup/python2/setup.ui.h:92 ../setup/python3/setup.ui.h:92 msgid "Edit Shortcut" msgstr "Editar atalho" #: ../setup/python2/setup.ui.h:93 ../setup/python3/setup.ui.h:93 msgid "Key Code:" msgstr "Código de tecla:" #: ../setup/python2/setup.ui.h:94 ../setup/python3/setup.ui.h:94 msgid "Modifier:" msgstr "Modificador:" #: ../setup/python2/setup.ui.h:95 ../setup/python3/setup.ui.h:95 msgid "A_lternate" msgstr "A_lternar" #: ../setup/python2/setup.ui.h:96 ../setup/python3/setup.ui.h:96 msgid "Co_ntrol" msgstr "Co_ntrol" #: ../setup/python2/setup.ui.h:97 ../setup/python3/setup.ui.h:97 msgid "_Shift" msgstr "_Shift" #: ../setup/python2/setup.ui.h:98 ../setup/python3/setup.ui.h:98 msgid "_Refresh" msgstr "Atualiza_r" #: ../setup/python2/setup.ui.h:99 ../setup/python3/setup.ui.h:99 msgid "_Input Characters" msgstr "Caracteres de e_ntrada" #: ../setup/python2/setup.ui.h:100 ../setup/python3/setup.ui.h:100 msgid "_Output Characters" msgstr "Caracteres de _saída" #: ../setup/python2/setup.ui.h:101 ../setup/python3/setup.ui.h:101 msgid "_Left Thumb Shift" msgstr "Thumb Shift _esquerdo" #: ../setup/python2/setup.ui.h:102 ../setup/python3/setup.ui.h:102 msgid "_Right Thumb Shift" msgstr "Thumb Shift _direito" #: ../setup/python2/setup.ui.h:103 ../setup/python3/setup.ui.h:103 msgid "_Remove" msgstr "_Remover" #: ../setup/python2/setup.ui.h:104 ../setup/python3/setup.ui.h:104 msgid "_Close" msgstr "_Fechar" #: ../setup/python2/setup.ui.h:105 ../setup/python3/setup.ui.h:105 msgid "_Short Label:" msgstr "Etiqueta _curta:" #: ../setup/python2/setup.ui.h:106 ../setup/python3/setup.ui.h:106 msgid "_Description:" msgstr "_Descrição:" #: ../setup/python2/setup.ui.h:107 ../setup/python3/setup.ui.h:107 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Usar seu dicionário sozinho com troca de dicionários" #: ../setup/python2/setup.ui.h:108 ../setup/python3/setup.ui.h:108 msgid "_Embed your dictionary in the system dictionary" msgstr "_Embutir seu dicionário no dicionário do sistema" #: ../setup/python2/setup.ui.h:109 ../setup/python3/setup.ui.h:109 msgid "Enable the _reverse conversion" msgstr "Ativar a conversão _inversa" #: ../setup/python2/setup.ui.h:110 ../setup/python3/setup.ui.h:110 msgid "The Anthy engine for the IBus input platform" msgstr "O motor do Anthy para a plataforma de entrada do IBus" #: ../setup/python2/setup.ui.h:111 ../setup/python3/setup.ui.h:111 msgid "translator_credits" msgstr "Rafael Fontenelle " ibus-anthy-1.5.17/po/pt_PT.po000066400000000000000000000607141475510605700157160ustar00rootroot00000000000000# Portuguese (Portugal) translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2020 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Manuela Silva , 2020. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2020-01-06 19:36+0000\n" "Last-Translator: Manuela Silva \n" "Language-Team: Portuguese (Portugal) \n" "Language: pt_PT\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 3.9.1\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Método de entrada japonês" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Preferências - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Configurar Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Modo de entrada" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Mudar modo de entrada" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Halfwidth Katakana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latim" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Método de digitação" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Mudar método de digitação" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Modo de segmento" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Mudar modo de conversão" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segmento múltiplo" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmento único" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Conversão imediata (segmento múltiplo)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Conversão imediata (segmento único)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Modo de dicionário" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Mudar dicionário" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Dicionário - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Dicionário" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Configurar dicionários" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Editar dicionários" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Iniciar ferramenta de dicionário" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Adicionar palavras" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Adicionar palavras ao dicionário" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Geral" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Conversão de Código Postal" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Símbolo" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Estilo de Caráter Antigo" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Etiqueta do menu" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Comando" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Atalho" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Descrição" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Esquerda" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Direita" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "Carateres de _Saída" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Predefinição" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "O seu ficheiro escolhido já foi adicionado: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "O seu ficheiro escolhido não existe: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "O seu ficheiro escolhido é uma diretoria: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Não pode adicionar dicionários na diretoria privada do anthy: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "O caminho do seu ficheiro não é bom: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "" #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "" #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "" #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "" #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "" #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" ibus-anthy-1.5.17/po/si.po000066400000000000000000000575041475510605700153060ustar00rootroot00000000000000# Sinhala translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2023 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Hela Basa , 2023. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2023-02-20 00:20+0000\n" "Last-Translator: Hela Basa \n" "Language-Team: Sinhala \n" "Language: si\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.15.2\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "ජපන් ආදාන ක්‍රමය" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "අභිප්‍රේත - ඇන්ති" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "ආදාන ක්‍රමය" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "ආදාන ක්‍රමය මාරුව" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "හිරගානා" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "කටකානා" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "ලතින්" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "පුළුල් ලතින්" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "ලියන ක්‍රමය" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "ලියන ක්‍රමය මාරුව" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "රොමාජි" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "කනා" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "" #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "" #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "" #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "" #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "" #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "" #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "" #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "" #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "" #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "" #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" ibus-anthy-1.5.17/po/sv.po000066400000000000000000000707551475510605700153260ustar00rootroot00000000000000# Swedish translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2023 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Luna Jernberg , 2023. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2023-08-22 02:08+0000\n" "Last-Translator: Luna Jernberg \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.18.2\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Japansk inmatningsmetod" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Anthy inmatningsmetoden är utformad för att mata in japansk text." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Inmatningsmetoder är skrivsystem som tillåter användare att mata in komplexa " "språk. De är nödvändiga eftersom dessa innehåller för många tecken för att " "bara kunna skrivas med ett traditionellt tangentbord." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Anthy Inmatningsmetod" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Kunde inte aktivera Anthy.\n" "Slutet på innehållet i filen %s/last-record2_default.utf8 i din hemkatalog " "är inte '\\n" "'. d.v.s. inte korrekt textformat.\n" "Vänligen fixa filen eller ta bort den manuellt och starta om IBus." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Inställningar - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Konfigurera Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Inmatningsläge" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Ändra inmatningsläge" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Halvbredd Katakana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Bred latin" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Skrivmetod" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Ändra skrivmetod" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Tumskift" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Segmentläge" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Växla konverteringsläge" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Multipla segment" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Enstaka segment" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Omedelbar konvertering (multipla segment)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Omedelbar konvertering (enstaka segment)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Ordboksläge" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Växla ordbok" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Ordbok - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Ord" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Konfigurera ordböcker" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Redigera ordböcker" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Starta ordboksverktyget" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Lägg till ord" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Lägg till ord i ordboken" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Allmänt" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Postnummerkonvertering" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Symbol" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Gammal teckenstil" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "IBus Anthy inställningar" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Ställ in IBus Anthy motor" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Menyetikett" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Kommando" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Genväg" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Beskrivning" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Inbäddad" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Enstaka" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Inmatning av tecken" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Utmatning av tecken" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Inmatning" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Enstaka" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Vänster" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Höger" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Anpassa Romaji tangenttabell" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "_Romaji tangenttabell:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "_Utdatatecken" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Standard" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Anpassa Kana tangenttabell" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "_Kana tangenttabell:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Japansk tangentbordslayout" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "Amerikansk tangentbordslayout" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Anpassa tumskift tangenttabell" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_Tumskift tangenttabell:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Enstaka _utdatatecken" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Bas" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "NICOLA-J tangentförlängning" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "NICOLA-A tangentförlängning" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "NICOLA-F tangentförlängning" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J tangentförlängning" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A tangentförlängning" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F tangentförlängning" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J tangentförlängning" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A tangentförlängning" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F tangentförlängning" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "Din valda fil har redan lagts till: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "Filen du har valt existerar inte: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "Din valda fil är en katalog: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Du kan inte lägga till ordböcker i anthy privat katalog: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "Din filsökväg är inte bra: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "Motorns xml-fil existerar inte: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Anthy tangentbordslayout har ändrats. Starta om ibus för att ladda om " "layouten." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Vänligen specificera indatatecken" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Vänligen specificera utdatatecken" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "Vänligen specificera Vänster tumskift tecken" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "Vänligen specificera höger tumskift tecken" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Din anpassade tangent är inte tilldelad i några sektioner. Kanske en bugg." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "Din fil existerar inte: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Öppna Ordboksfil" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Avbryt" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Öppna" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Redigera Ordboksfil" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_OK" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "Din valda fil är inte korrekt." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "Du kan inte ta bort systemordlistan." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "Din fil är inte bra." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Visa Ordboksfil" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Tryck på en tangent (eller en tangentkombination)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "Dialogen stängs när tangenten släpps" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "Ogiltig tangentsymbol" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Denna tangentsymbol är inte giltig" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Ingen" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 tangentförlängning" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 tangentförlängning" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Behåll numeriska tangentbordets koder" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Konvertera tecken" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Gör ingenting" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Konvertera automatiskt" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "förbinda automatiskt" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Rensa" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Förbinda" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Håll kvar" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Ställ in - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Inmatningsläge:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Skrivläge:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Konverterings _läge:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Initiala inställningar" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Menysynlighet på statusikon" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_Periodstil:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Symbo_l stil:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Typ av numeriska knappar:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Beteende vid punkt:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Beteende vid _Fokusera ut:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Beteende" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Kandidat _fönstersidstorlek:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Konvertera _symboler med en kolumnbredd" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Konvertera _nummer med en kolumnbredd" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Kon_vertera mellanslag med en kolumnbredd" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Änd_ra “Hiragana” och “Latin” med Shift tangenten och Hiragana–Katakana " "tangent i förredigera" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Annat" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Konvertering" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_Genvägstyp:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "St_andard" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Redigera" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Tangentbindning" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Romaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Tangentbords _layout:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Tangentbordslayout" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Skrivmetod" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_Vänstra tummen tumskifttangent:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Högra _tumme tumskifttangent:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Justera layout för _inmatningsmetod till systemets tangentbordslayout" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Justera IM-layout till XKB-layout" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Layout för inmatnings_metod:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Starta om IBus när du ändrar tangentbordslayouten" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Starta om IBus när du ändrar XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Ytterligare tangentarrangemang:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "'~', '『', '¢', '£' och så vidare kan skriva med tumskifttangenten" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Du behöver inte konfigurera om systemets tangentbordslayout för \"Ytterligare" " tangentarrangemang\" eftersom det här alternativet ändrar " "inmatningsmetodens layout endast om inmatningsmetoden är aktiverad." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Du behöver inte konfigurera om XKB eftersom detta alternativ endast ändrar " "IM-layout med IM igång." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Aktivera halvröst ljudmärke med Skift-tangenten" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift kan skriva ut Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Tum _Skift tangenttabell:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Tum skift layout" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Tum skift" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "_Redigera ordbokskommando:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "_Lägg till ordkommando:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Standardordbokskonfiguration" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Visa" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Lägg till" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Ta bort" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Upp" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Du kan ändra ordningen på språkfältet" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Ner" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Utökade ordböcker" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Ordbok" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Om" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Stäng" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Redigera genväg" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Tangentkod:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modifierare:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lternera" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "Ko_ntroll" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Skift" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Uppdatera" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "_Inmatning av tecken" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "_Utdatatecken" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_Vänstra tumskift" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_Högra tumskift" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Ta bort" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Kort etikett:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Beskrivning:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Använd din ordbok ensam när du byter ordböcker" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Bädda in din ordbok i systemordboken" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Aktivera _omvänd konvertering" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Anthy-motorn för IBus-inmatningsplattformen" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" "Daniel Nylander\n" "Christian Rose\n" "Göran Uddeborg\n" "Luna Jernberg\n" "\n" "Skicka synpunkter på översättningen till\n" "tp-sv@listor.tp-sv.se" ibus-anthy-1.5.17/po/tr.po000066400000000000000000000711661475510605700153200ustar00rootroot00000000000000# Turkish translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2023 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Oğuz Ersen , 2020, 2021. # Oğuz Ersen , 2022. msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2022-09-24 15:19+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.14.1\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Japonca giriş yöntemi" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Anthy giriş yöntemi, Japonca metin girmek için tasarlanmıştır." #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Giriş yöntemleri, kullanıcıların karmaşık dilleri girmesine izin veren yazım " "sistemleridir. Bu diller geleneksel bir klavyeye yerleştirilmek için çok " "fazla karakter içerdikleri için bunlar gereklidir." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Anthy Giriş Yöntemi" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Anthy etkinleştirilemedi.\n" "Ana dizininizdeki %s/last-record2_default.utf8 dosyasının içeriğinin sonu '\\" "n" "' değil. Yani metin biçimi doğru değil.\n" "Lütfen dosyayı düzeltin veya manuel olarak kaldırın ve IBus'u yeniden " "başlatın." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Tercihler - Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Anthy'i Yapılandır" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Giriş modu" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Giriş modunu değiştir" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Yarım genişlikte Katakana" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latince" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Geniş Latin" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Yazma yöntemi" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Yazma yöntemini değiştir" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Thumb shift" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Segment modu" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Dönüşüm modunu değiştir" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Çoklu segment" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Tek segment" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Anında dönüşüm (çoklu segment)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Anında dönüşüm (tek segment)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Sözlük modu" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Sözlüğü değiştir" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Sözlük - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "Sözlük" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Sözlükleri yapılandır" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Sözlükleri düzenle" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Sözlük aracını başlat" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Sözcük ekle" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Sözlüğe sözcük ekle" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Genel" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Posta Kodu Dönüştürme" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Sembol" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Eski Karakter Stili" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Dönem" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "IBus Anthy Kurulumu" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "IBus Anthy motorunu kur" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Menü etiketi" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Komut" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Kısayol" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Açıklama" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Gömülü" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Tek" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Giriş Karakterleri" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Çıkış Karakterleri" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Giriş" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Tek" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Sol" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Sağ" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Romaji Tuş Tablosunu Özelleştir" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "_Romaji Tuş Tablosu:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "_Çıkış Karakterleri" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Öntanımlı" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Kana Tuş Tablosunu Özelleştir" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "_Kana Tuş Tablosu:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Japonca Klavye Düzeni" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "ABD Klavye Düzeni" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Thumb Shift Tuş Tablosunu Özelleştir" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_Thumb Shift Tuş Tablosu:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Tek _Çıkış Karakterleri" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Temel" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "NICOLA-J tuş uzantısı" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "NICOLA-A tuş uzantısı" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "NICOLA-F tuş uzantısı" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J tuş uzantısı" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A tuş uzantısı" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F tuş uzantısı" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J tuş uzantısı" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A tuş uzantısı" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F tuş uzantısı" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "Seçtiğiniz dosya zaten eklenmiş: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "Seçtiğiniz dosya mevcut değil: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "Seçtiğiniz dosya bir dizin: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Anthy özel dizinine sözlük ekleyemezsiniz: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "Dosya yolunuz iyi değil: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "Motor xml dosyası mevcut değil: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Anthy klavye düzeni değiştirildi. Düzeni yeniden yüklemek için lütfen ibus'u " "yeniden başlatın." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Lütfen Giriş Karakterlerini belirtin" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Lütfen Çıkış Karakterlerini belirtin" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "Lütfen Sol Thumb Shift Karakterlerini belirtin" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "Lütfen Sağ Thumb Shift Karakterlerini belirtin" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "Özel tuşunuz hiçbir bölümde atanmamış. Hata olabilir." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "Dosyanız mevcut değil: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Sözlük Dosyasını Aç" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_İptal" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Aç" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Sözlük Dosyasını Düzenle" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_Tamam" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "Seçtiğiniz dosya doğru değil." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "Sistem sözlüğünü silemezsiniz." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "Dosyanız iyi değil." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Sözlük Dosyasını Görüntüle" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Lütfen bir tuşa (veya bir tuş dizisine) basın" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "Tuş bırakıldığında iletişim kutusu kapatılacak" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "Geçersiz keysym" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Bu keysym geçerli değil" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Hiçbiri" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 tuş uzantısı" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 tuş uzantısı" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Sayısal tuş takımı kodlarını sakla" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Karakterleri dönüştür" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Hiçbir şey yapma" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Otomatik olarak dönüştür" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Otomatik olarak kullan" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Temizle" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Kullan" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Beklet" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Kurulum - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Giriş Modu:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Yazma Yöntemi:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Dönüşüm _Modu:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "İlk Kurulum" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Durum Simgesinde Menü Görünürlüğü" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_Nokta Stili:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Sembo_l Stili:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Sayısal Tuş Takımı _Tuş Türü:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "Nokta Koyma _Davranışı:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "_Odağı Kaybetme Davranışı:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Davranış" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Aday _Penceresi Sayfa Boyutu:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Bir sütun genişliğindeki _sembolleri dönüştür" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Bir sütun genişliğindeki _numaraları dönüştür" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Bir sütun genişliğindeki boşlukları _dönüştür" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "Ön-düzenlemede Shift tuşu ve Hiragana–Katakana tuşu ile “Hiragana” ve “Latin”" " arasında geç_iş yap" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Diğer" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Dönüşüm" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_Kısayol Türü:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Ön_tanımlı" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Düzenle" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Tuş Ataması" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Romaji" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Kana" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "Klavye _düzeni:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Klavye düzeni" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Yazma Yöntemi" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_Sol Thumb Shift Tuşu:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Sağ _Thumb Shift Tuşu:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "_Giriş yöntemi düzenini sistem klavye düzenine ayarla" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "IM düzenini XKB düzenine ayarla" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Giriş _Yöntemi Düzeni:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Klavye düzenini değiştirdiğinizde IBus'u yeniden başlatın" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "XKB'yi değiştirdiğinizde IBus'u yeniden başlatın" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Ek Tuş Düzenlemesi:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "'~', '『', '¢', '£' ve benzerleri Thumb Shift tuşu ile yazdırılabilir" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "\"Ek Tuş Düzenlemesi\" için sistem klavye düzenini yeniden yapılandırmanız " "gerekmez, çünkü bu seçenek giriş yöntemi düzenini yalnızca giriş yöntemi " "açık olduğunda değiştirir." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Bu seçenek IM düzenini yalnızca IM açıkken değiştirdiğinden XKB'yi yeniden " "yapılandırmanız gerekmez." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "Shift tuşuyla yarı sesli ses işaretini _etkinleştir" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift, Handakuon yazdırabilir" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Thumb _Shift Tuş Tablosu:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Thumb Shift Düzeni" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Thumb Shift" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "Sözlük _Düzenleme Komutu:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Sözcük _Ekleme Komutu:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Öntanımlı Sözlük Yapılandırması" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Görüntüle" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Ekle" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Sil" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Yukarı" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Dil çubuğundaki sırayı değiştirebilirsiniz" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Aşağı" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Genişletilmiş Sözlükler" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Sözlük" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Hakkında" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Kapat" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Kısayolu Düzenle" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Tuş Kodu:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Değiştirici:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lt" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "C_trl" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Shift" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Yenile" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "_Giriş Karakterleri" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "_Çıkış Karakterleri" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_Sol Thumb Shift" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "S_ağ Thumb Shift" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Kaldır" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Kısa Etiket:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Açıklama:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "Sözlükleri değiştirerek sözlüğünüzü tek başına _kullanın" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "Sözlüğünüzü sistem sözlüğüne _dahil edin" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "_Ters dönüşümü etkinleştir" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "IBus giriş platformu için Anthy motoru" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Oğuz Ersen " ibus-anthy-1.5.17/po/uk.po000066400000000000000000001027301475510605700153020ustar00rootroot00000000000000# Ukrainian translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2020 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # Yuri Chornoivan , 2015. #zanata, 2020. # Yuri Chornoivan , 2016. #zanata, 2020. # fujiwara , 2017. #zanata # fujiwara , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus-anthy 1.5.10\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2019-04-22 23:08+0900\n" "PO-Revision-Date: 2020-01-08 10:40+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" "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 3.9.1\n" #: data/ibus-anthy.appdata.xml.in:7 msgid "Japanese input method" msgstr "Спосіб введення японської" #: data/ibus-anthy.appdata.xml.in:9 msgid "The Anthy input method is designed for entering Japanese text." msgstr "" "Спосіб введення Anthy розроблено для введення текстів японськими ієрогліфами." "" #: data/ibus-anthy.appdata.xml.in:12 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "" "Способи введення — це системи набирання тексту, за допомогою яких " "користувачі можуть вводити тексти складними системами писемності. Вони " "потрібні для мов, де запис здійснюється за допомогою великої кількості " "символів, які просто не могли б уміститися на клавіатурі." #: engine/python2/default.inputMethod.xml.in.in:13 #: engine/python3/default.inputMethod.xml.in.in:13 msgid "Anthy Input Method" msgstr "Спосіб введення Anthy" #: engine/python2/engine.py:208 engine/python3/engine.py:209 #, python-format msgid "" "Could not enable Anthy.\n" "The end of the content of the file %s/last-record2_default.utf8 in your home " "directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "Не вдалося увімкнути Anthy.\n" "Дані у файлі %s/last-record2_default.utf8 вашого домашнього каталогу не " "завершуються на «\\n». Тобто текст файла є некоректним.\n" "Будь ласка, виправте файл або вилучіть його вручну і перезапустіть IBus." #: engine/python2/engine.py:256 engine/python3/engine.py:257 #: setup/python2/main.py:420 setup/python3/main.py:425 msgid "Preferences - Anthy" msgstr "Параметри – Anthy" #: engine/python2/engine.py:258 engine/python3/engine.py:259 msgid "Configure Anthy" msgstr "Налаштувати Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: engine/python2/engine.py:295 engine/python2/engine.py:383 #: engine/python2/engine.py:450 engine/python2/engine.py:526 #: engine/python2/engine.py:892 engine/python2/engine.py:923 #: engine/python2/engine.py:947 engine/python2/engine.py:976 #: engine/python2/engine.py:1038 engine/python3/engine.py:296 #: engine/python3/engine.py:384 engine/python3/engine.py:451 #: engine/python3/engine.py:527 engine/python3/engine.py:887 #: engine/python3/engine.py:918 engine/python3/engine.py:942 #: engine/python3/engine.py:971 engine/python3/engine.py:1033 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: engine/python2/engine.py:296 engine/python2/engine.py:893 #: engine/python3/engine.py:297 engine/python3/engine.py:888 #: setup/python2/main.py:405 setup/python3/main.py:410 msgid "Input mode" msgstr "Режим введення" #: engine/python2/engine.py:302 engine/python3/engine.py:303 msgid "Switch input mode" msgstr "Перемкнути режим введення" #: engine/python2/engine.py:312 engine/python3/engine.py:313 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Хірагана" #: engine/python2/engine.py:321 engine/python3/engine.py:322 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Катакана" #: engine/python2/engine.py:330 engine/python3/engine.py:331 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Катакана, символи половинної ширини" #: engine/python2/engine.py:339 engine/python3/engine.py:340 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Латинська" #: engine/python2/engine.py:348 engine/python3/engine.py:349 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Широка латинська" #: engine/python2/engine.py:384 engine/python2/engine.py:924 #: engine/python2/engine.py:948 engine/python3/engine.py:385 #: engine/python3/engine.py:919 engine/python3/engine.py:943 #: setup/python2/main.py:408 setup/python3/main.py:413 msgid "Typing method" msgstr "Метод введення" #: engine/python2/engine.py:390 engine/python3/engine.py:391 msgid "Switch typing method" msgstr "Перемкнути метод введення" #: engine/python2/engine.py:400 engine/python3/engine.py:401 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Ромадзі" #: engine/python2/engine.py:409 engine/python3/engine.py:410 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Кана" #: engine/python2/engine.py:418 engine/python3/engine.py:419 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Додаткові Shift" #: engine/python2/engine.py:451 engine/python2/engine.py:977 #: engine/python3/engine.py:452 engine/python3/engine.py:972 #: setup/python2/main.py:411 setup/python3/main.py:416 msgid "Segment mode" msgstr "Режим сегментів" #: engine/python2/engine.py:457 engine/python3/engine.py:458 msgid "Switch conversion mode" msgstr "Перемкнути режим перетворення" #: engine/python2/engine.py:467 engine/python3/engine.py:468 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Кратний сегмент" #: engine/python2/engine.py:476 engine/python3/engine.py:477 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Одинарний сегмент" #: engine/python2/engine.py:485 engine/python3/engine.py:486 #: setup/python2/setup.ui:93 setup/python3/setup.ui:93 msgid "Immediate conversion (multiple segment)" msgstr "Негайне перетворення (кратний сегмент)" #: engine/python2/engine.py:494 engine/python3/engine.py:495 #: setup/python2/setup.ui:96 setup/python3/setup.ui:96 msgid "Immediate conversion (single segment)" msgstr "Негайне перетворення (одинарний сегмент)" #: engine/python2/engine.py:527 engine/python2/engine.py:1039 #: engine/python3/engine.py:528 engine/python3/engine.py:1034 #: setup/python2/main.py:414 setup/python3/main.py:419 msgid "Dictionary mode" msgstr "Режим словника" #: engine/python2/engine.py:533 engine/python3/engine.py:534 msgid "Switch dictionary" msgstr "Перемкнути словник" #: engine/python2/engine.py:623 engine/python3/engine.py:623 #: setup/python2/main.py:417 setup/python3/main.py:422 msgid "Dictionary - Anthy" msgstr "Словник – Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:629 engine/python3/engine.py:628 msgid "Dic" msgstr "СЛОВ" #: engine/python2/engine.py:636 engine/python3/engine.py:635 msgid "Configure dictionaries" msgstr "Налаштувати словники" #: engine/python2/engine.py:646 engine/python3/engine.py:645 msgid "Edit dictionaries" msgstr "Редагувати словники" #: engine/python2/engine.py:648 engine/python3/engine.py:647 msgid "Launch the dictionary tool" msgstr "Запустити засіб роботи зі словниками" #: engine/python2/engine.py:655 engine/python3/engine.py:654 msgid "Add words" msgstr "Додати слова" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Add words to the dictionary" msgstr "Додавати слова до словника" #: setup/python2/anthyprefs.py:336 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:329 setup/python3/setup.ui:397 msgid "General" msgstr "Загальне" #: setup/python2/anthyprefs.py:337 setup/python3/anthyprefs.py:330 msgid "Zip Code Conversion" msgstr "Перетворення кодів індексів" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Symbol" msgstr "Символ" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Old Character Style" msgstr "Старий стиль символів" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Era" msgstr "Ера" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Emoji" msgstr "Емодзі" #: setup/python2/ibus-setup-anthy.desktop.in.in:3 #: setup/python3/ibus-setup-anthy.desktop.in.in:3 msgid "IBus Anthy Setup" msgstr "Налаштування Anthy IBus" #: setup/python2/ibus-setup-anthy.desktop.in.in:4 #: setup/python3/ibus-setup-anthy.desktop.in.in:4 msgid "Set up IBus Anthy engine" msgstr "Налаштування рушія Anthy IBus" #: setup/python2/main.py:177 setup/python3/main.py:180 msgid "Menu label" msgstr "Мітка меню" #: setup/python2/main.py:198 setup/python3/main.py:201 msgid "Command" msgstr "Команда" #: setup/python2/main.py:202 setup/python3/main.py:205 msgid "Shortcut" msgstr "Скорочення" #: setup/python2/main.py:247 setup/python3/main.py:250 msgid "Description" msgstr "Опис" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:258 msgid "Embd" msgstr "Вбуд" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:266 msgid "Sgl" msgstr "Одн" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:446 setup/python3/main.py:472 msgid "Input Chars" msgstr "Введених символів" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:448 setup/python3/main.py:474 msgid "Output Chars" msgstr "Виведених символів" #: setup/python2/main.py:499 setup/python3/main.py:504 msgid "Input" msgstr "Введення" #: setup/python2/main.py:501 setup/python3/main.py:506 msgid "Single" msgstr "Одинарний" #: setup/python2/main.py:503 setup/python3/main.py:508 msgid "Left" msgstr "Ліворуч" #: setup/python2/main.py:505 setup/python3/main.py:510 msgid "Right" msgstr "Праворуч" #: setup/python2/main.py:587 setup/python3/main.py:592 msgid "Customize Romaji Key Table" msgstr "Налаштувати таблицю клавіш ромадзі" #: setup/python2/main.py:588 setup/python2/setup.ui:910 #: setup/python3/main.py:593 setup/python3/setup.ui:910 msgid "_Romaji Key Table:" msgstr "Таблиця клавіш _ромадзі:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:594 setup/python3/main.py:600 msgid "_Output Chars" msgstr "Символи в_иведення" #: setup/python2/main.py:590 setup/python2/main.py:1071 #: setup/python2/main.py:1175 setup/python2/setup.ui:183 #: setup/python3/main.py:595 setup/python3/main.py:1065 #: setup/python3/main.py:1169 setup/python3/setup.ui:183 msgid "Default" msgstr "Типовий" #: setup/python2/main.py:593 setup/python3/main.py:598 msgid "Customize Kana Key Table" msgstr "Налаштувати таблицю клавіш кани" #: setup/python2/main.py:594 setup/python2/setup.ui:988 #: setup/python3/main.py:599 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Таблиця клавіш _кани:" #: setup/python2/main.py:596 setup/python3/main.py:601 msgid "Japanese Keyboard Layout" msgstr "Японська розкладка клавіатури" #: setup/python2/main.py:597 setup/python3/main.py:602 msgid "U.S. Keyboard Layout" msgstr "Американська розкладка клавіатури" #: setup/python2/main.py:600 setup/python3/main.py:605 msgid "Customize Thumb Shift Key Table" msgstr "Налаштовування розкладки клавіш із додатковими Shift" #: setup/python2/main.py:601 setup/python3/main.py:606 msgid "_Thumb Shift Key Table:" msgstr "_Розкладка з додатковими Shift:" #: setup/python2/main.py:602 setup/python3/main.py:607 msgid "Single _Output Chars" msgstr "Одинарні символи в_иведення" #: setup/python2/main.py:603 setup/python3/main.py:608 msgid "Base" msgstr "Основа" #: setup/python2/main.py:604 setup/python3/main.py:609 msgid "NICOLA-J key extension" msgstr "Розширення клавіш NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:610 msgid "NICOLA-A key extension" msgstr "Розширення клавіш NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:611 msgid "NICOLA-F key extension" msgstr "Розширення клавіш NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:612 msgid "FMV KB231-J key extension" msgstr "Розширення клавіш FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:613 msgid "FMV KB231-A key extension" msgstr "Розширення клавіш FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:614 msgid "FMV KB231-F key extension" msgstr "Розширення клавіш FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:615 msgid "FMV KB611-J key extension" msgstr "Розширення клавіш FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:616 msgid "FMV KB611-A key extension" msgstr "Розширення клавіш FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:617 msgid "FMV KB611-F key extension" msgstr "Розширення клавіш FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:758 msgid "Your choosed file has already been added: " msgstr "Вибраний вами файл вже додано: " #: setup/python2/main.py:757 setup/python3/main.py:762 msgid "The file you have chosen does not exist: " msgstr "Вибраного вами файла не існує: " #: setup/python2/main.py:761 setup/python3/main.py:766 msgid "Your choosed file is a directory: " msgstr "Вибраний вами файл є каталогом: " #: setup/python2/main.py:765 setup/python3/main.py:770 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Не можна додавати словник до приватного каталогу anthy: " #: setup/python2/main.py:774 setup/python3/main.py:779 msgid "Your file path is not good: " msgstr "Шлях до файла є помилковим: " #: setup/python2/main.py:935 setup/python3/main.py:938 msgid "The engine xml file does not exist: " msgstr "Файла xml рушія не існує: " #: setup/python2/main.py:1051 setup/python3/main.py:1045 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Змінено розкладку клавіатури Anthy. Будь ласка, перезапустіть ibus, щоб " "перезавантажити розкладку." #: setup/python2/main.py:1263 setup/python3/main.py:1257 msgid "Please specify Input Chars" msgstr "Будь ласка, вкажіть символи введення" #: setup/python2/main.py:1266 setup/python3/main.py:1260 msgid "Please specify Output Chars" msgstr "Будь ласка, вкажіть символи виведення" #: setup/python2/main.py:1269 setup/python3/main.py:1263 msgid "Please specify Left Thumb Shift Chars" msgstr "Будь ласка, вкажіть символи лівої додаткової клавіші Shift" #: setup/python2/main.py:1272 setup/python3/main.py:1266 msgid "Please specify Right Thumb Shift Chars" msgstr "Будь ласка, вкажіть символи правої додаткової клавіші Shift" #: setup/python2/main.py:1285 setup/python2/main.py:1319 #: setup/python3/main.py:1279 setup/python3/main.py:1313 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" "Вашу нетипову клавішу не призначено до жодного розділу. Можливо, це вада у " "програмі." #: setup/python2/main.py:1374 setup/python2/main.py:1463 #: setup/python3/main.py:1368 setup/python3/main.py:1457 msgid "Your file does not exist: " msgstr "Вашого файла не існує: " #: setup/python2/main.py:1384 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Відкрити файл словника" #: setup/python2/main.py:1387 setup/python2/main.py:1393 #: setup/python2/setup.ui:2166 setup/python3/main.py:1381 #: setup/python3/main.py:1387 setup/python3/setup.ui:2166 msgid "_Cancel" msgstr "_Скасувати" #: setup/python2/main.py:1388 setup/python3/main.py:1382 msgid "_Open" msgstr "_Відкрити" #: setup/python2/main.py:1391 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Змінити файл словника" #: setup/python2/main.py:1394 setup/python2/main.py:1483 #: setup/python2/setup.ui:2181 setup/python3/main.py:1388 #: setup/python3/main.py:1477 setup/python3/setup.ui:2181 msgid "_OK" msgstr "_Гаразд" #: setup/python2/main.py:1405 setup/python3/main.py:1399 msgid "Your choosed file is not correct." msgstr "Вибраний вами файл є некоректним." #: setup/python2/main.py:1435 setup/python3/main.py:1429 msgid "You cannot delete the system dictionary." msgstr "Не можна вилучати загальносистемний словник." #: setup/python2/main.py:1459 setup/python3/main.py:1453 msgid "Your file is not good." msgstr "У вашому файлі помилки." #: setup/python2/main.py:1481 setup/python3/main.py:1475 msgid "View Dictionary File" msgstr "Переглянути файл словника" #: setup/python2/main.py:1642 setup/python3/main.py:1636 msgid "Please press a key (or a key combination)" msgstr "Будь ласка, натисніть клавішу (або комбінацію клавіш)" #: setup/python2/main.py:1643 setup/python3/main.py:1637 msgid "The dialog will be closed when the key is released" msgstr "Діалогове вікно буде закрито після відпускання клавіші" #: setup/python2/main.py:1663 setup/python2/main.py:1684 #: setup/python3/main.py:1657 setup/python3/main.py:1678 msgid "Invalid keysym" msgstr "Некоректний символ клавіші" #: setup/python2/main.py:1664 setup/python2/main.py:1685 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "This keysym is not valid" msgstr "Цей символ клавіші є некоректним" #: setup/python2/setup.ui:39 setup/python3/setup.ui:39 msgid "NICOLA-J" msgstr "NICOLA-J" #: setup/python2/setup.ui:42 setup/python3/setup.ui:42 msgid "NICOLA-A" msgstr "NICOLA-A" #: setup/python2/setup.ui:45 setup/python3/setup.ui:45 msgid "NICOLA-F" msgstr "NICOLA-F" #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Немає" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Розширення клавіш FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Розширення клавіш FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Зберігати коди цифрової панелі" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Перетворити символи" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Нічого не робити" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Автоматично перетворювати" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Надсилати автоматично" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Спорожнити" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Надіслати" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Призупинити" #: setup/python2/setup.ui:186 setup/python3/setup.ui:186 msgid "ATOK" msgstr "ATOK" #: setup/python2/setup.ui:189 setup/python3/setup.ui:189 msgid "Wnn" msgstr "Wnn" #: setup/python2/setup.ui:197 setup/python3/setup.ui:197 msgid "Setup - IBus-Anthy" msgstr "Налаштування – IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Режим введення:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "Метод _введення:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "_Режим перетворення:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Початкове налаштування" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Видимість меню піктограми стану" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Стиль _крапки:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "С_тиль символів:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Тип _клавіш цифрової панелі:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "О_бробка крапки:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Поведінка при в_траті фокуса:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Поведінка" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Розмір сторінки вікна в_аріантів:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Перетворювати си_мволи з шириною у один стовпчик" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Перетворювати чис_ла з шириною у один стовпчик" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Пере_творювати пробіли з шириною у один стовпчик" #: setup/python2/setup.ui:707 setup/python3/setup.ui:707 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" "П_еремикатися між хіраганою і латинською за допомогою клавіші Shift, а " "клавішу хірагани-катакани використовувати у попередньому редагуванні" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Інше" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Перетворення" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Тип с_корочення:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Ти_повий" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "З_міни" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Прив’язка клавіш" #: setup/python2/setup.ui:951 setup/python3/setup.ui:951 msgid "Romaji" msgstr "Ромадзі" #: setup/python2/setup.ui:1029 setup/python3/setup.ui:1029 msgid "Kana" msgstr "Кана" #: setup/python2/setup.ui:1066 setup/python3/setup.ui:1066 msgid "Keyboad _layout:" msgstr "_Розкладка клавіатури:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Розкладка клавіатури" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Метод введення" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_Ліва додаткова клавіша Shift:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Права _додаткова клавіша Shift:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "Коригувати с_посіб введення за загальносистемною розкладкою клавіатури" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Коригувати розкладку IM за розкладкою XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Ро_зкладка способу введення:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Перезапуск IBus після зміни розкладки клавіатури" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Перезапуск IBus після зміни XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Додаткове упорядковування клавіш:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "«~», «『», «¢», «£» тощо можна виводити за допомогою клавіші додаткового " "Shift" #: setup/python2/setup.ui:1419 setup/python3/setup.ui:1419 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" "Вам не потрібно змінювати налаштування розкладки клавіатури системи для " "«Додаткового упорядковування клавіш», оскільки за допомогою цього пункту " "можна змінити розкладку способу введення, коли увімкнено відповідний спосіб " "введення." #: setup/python2/setup.ui:1420 setup/python3/setup.ui:1420 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" "Вам не потрібно змінювати налаштування XKB, оскільки за допомогою цього " "пункту розкладка способу введення змінюється, лише коли увімкнено спосіб " "введення." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Увімкнути додавання позначки напівнаголосу клавішею Shift" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Сейон + Shift може виводити хандаквон" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Розкладка з _додатковими Shift:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Розкладка з додатковими Shift" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Додатковий Shift" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "З_мінити команду словника:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "_Додати команду слова:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Налаштування типового словника" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "П_ерегляд" #: setup/python2/setup.ui:1747 setup/python2/setup.ui:2099 #: setup/python2/setup.ui:2373 setup/python3/setup.ui:1747 #: setup/python3/setup.ui:2099 setup/python3/setup.ui:2373 msgid "_Add" msgstr "_Додати" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "В_илучити" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "В_гору" #: setup/python2/setup.ui:1810 setup/python2/setup.ui:1827 #: setup/python3/setup.ui:1810 setup/python3/setup.ui:1827 msgid "You can change the order on language bar" msgstr "Ви можете змінити порядок на панелі мов" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "В_низ" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Розширені словники" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Словник" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Інформація" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Закрити" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Редагувати скорочення" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Код клавіші:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Модифікатор:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lt" #: setup/python2/setup.ui:2055 setup/python3/setup.ui:2055 msgid "Co_ntrol" msgstr "C_trl" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Shift" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Оновити" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Символи _введення" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Символи в_иведення" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_Лівий додатковий Shift" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_Правий додатковий Shift" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "Ви_лучити" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Коротка мітка:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Опис:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "В_икористовувати лише ваш словник при перемиканні словників" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "В_будувати ваш словник до загальносистемного словника" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Увімкнути зво_ротне перетворення" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Рушій Anthy для платформи введення IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "" "Переклад українською:
\n" "Юрій Чорноіван" ibus-anthy-1.5.17/po/zh_CN.po000066400000000000000000000726301475510605700156710ustar00rootroot00000000000000# Chinese translation for ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2024 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # Peng Huang , 2008. # Popolon , 2011 # Popolon , 2011 # Dingzhong Chen , 2021. # Liu Tao , 2021, 2023. # Jingge Chen , 2023. msgid "" msgstr "" "Project-Id-Version: IBus-Anthy\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus-anthy/issues\n" "POT-Creation-Date: 2017-03-17 13:26+0900\n" "PO-Revision-Date: 2023-12-27 14:36+0000\n" "Last-Translator: Liu Tao \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: Weblate 5.3\n" #: ../data/ibus-anthy.appdata.xml.in.h:1 msgid "Japanese input method" msgstr "日文输入法" #: ../data/ibus-anthy.appdata.xml.in.h:2 msgid "The Anthy input method is designed for entering Japanese text." msgstr "Anthy 输入法专为输入日文文本而设计。" #: ../data/ibus-anthy.appdata.xml.in.h:3 msgid "" "Input methods are typing systems allowing users to input complex languages. " "They are necessary because these contain too many characters to simply be " "laid out on a traditional keyboard." msgstr "输入法是允许用户输入复杂语言的打字系统。之所以需要输入法,是因为这些语言包含" "的字符太多,无法在传统键盘上简单地输入。" #: ../engine/python2/default.xml.in.in.h:1 #: ../engine/python3/default.xml.in.in.h:1 msgid "Anthy Input Method" msgstr "Anthy 输入法" #: ../engine/python2/engine.py:207 ../engine/python3/engine.py:208 msgid "" "Could not enable Anthy.\n" "The end of the content of the file .anthy/last-record2_default.utf8 in your " "home directory is not '\\n'. I.e. not correct text format.\n" "Please fix the file or remove it by manual and restart IBus." msgstr "" "无法启用 Anthy。\n" "您的主目录中的.anthy/last-record2_default.utf8 文件内容的结尾不是'\\n" "'。\n" "请修复该文件或手动删除该文件并重启 IBus。" #: ../engine/python2/engine.py:255 ../engine/python3/engine.py:256 #: ../setup/python2/main.py:416 ../setup/python3/main.py:421 msgid "Preferences - Anthy" msgstr "首选项 - Anthy" #: ../engine/python2/engine.py:257 ../engine/python3/engine.py:258 msgid "Configure Anthy" msgstr "配置 Anthy" #. Translators: Specify the order of %s with your translation. #. It will be "Input Mode (A)" for example. #: ../engine/python2/engine.py:294 ../engine/python2/engine.py:382 #: ../engine/python2/engine.py:449 ../engine/python2/engine.py:525 #: ../engine/python2/engine.py:856 ../engine/python2/engine.py:884 #: ../engine/python2/engine.py:908 ../engine/python2/engine.py:934 #: ../engine/python2/engine.py:996 ../engine/python3/engine.py:295 #: ../engine/python3/engine.py:383 ../engine/python3/engine.py:450 #: ../engine/python3/engine.py:526 ../engine/python3/engine.py:851 #: ../engine/python3/engine.py:879 ../engine/python3/engine.py:903 #: ../engine/python3/engine.py:929 ../engine/python3/engine.py:991 #, python-format msgid "%(description)s (%(symbol)s)" msgstr "%(description)s (%(symbol)s)" #: ../engine/python2/engine.py:295 ../engine/python2/engine.py:857 #: ../engine/python3/engine.py:296 ../engine/python3/engine.py:852 #: ../setup/python2/main.py:401 ../setup/python3/main.py:406 msgid "Input mode" msgstr "输入模式" #: ../engine/python2/engine.py:301 ../engine/python3/engine.py:302 msgid "Switch input mode" msgstr "切换输入模式" #: ../engine/python2/engine.py:311 ../engine/python3/engine.py:312 #: ../setup/python2/setup.ui.h:1 ../setup/python3/setup.ui.h:1 msgid "Hiragana" msgstr "平假名" #: ../engine/python2/engine.py:320 ../engine/python3/engine.py:321 #: ../setup/python2/setup.ui.h:2 ../setup/python3/setup.ui.h:2 msgid "Katakana" msgstr "片假名" #: ../engine/python2/engine.py:329 ../engine/python3/engine.py:330 #: ../setup/python2/setup.ui.h:3 ../setup/python3/setup.ui.h:3 msgid "Halfwidth Katakana" msgstr "半角片假名" #: ../engine/python2/engine.py:338 ../engine/python3/engine.py:339 #: ../setup/python2/setup.ui.h:4 ../setup/python3/setup.ui.h:4 msgid "Latin" msgstr "英数" #: ../engine/python2/engine.py:347 ../engine/python3/engine.py:348 #: ../setup/python2/setup.ui.h:5 ../setup/python3/setup.ui.h:5 msgid "Wide Latin" msgstr "全角英数" #: ../engine/python2/engine.py:383 ../engine/python2/engine.py:885 #: ../engine/python2/engine.py:909 ../engine/python3/engine.py:384 #: ../engine/python3/engine.py:880 ../engine/python3/engine.py:904 #: ../setup/python2/main.py:404 ../setup/python3/main.py:409 msgid "Typing method" msgstr "键入方法" #: ../engine/python2/engine.py:389 ../engine/python3/engine.py:390 msgid "Switch typing method" msgstr "切换键入方法" #: ../engine/python2/engine.py:399 ../engine/python3/engine.py:400 #: ../setup/python2/setup.ui.h:12 ../setup/python3/setup.ui.h:12 msgid "Romaji" msgstr "罗马字" #: ../engine/python2/engine.py:408 ../engine/python3/engine.py:409 #: ../setup/python2/setup.ui.h:13 ../setup/python3/setup.ui.h:13 msgid "Kana" msgstr "假名" #: ../engine/python2/engine.py:417 ../engine/python3/engine.py:418 #: ../setup/python2/setup.ui.h:14 ../setup/python3/setup.ui.h:14 msgid "Thumb shift" msgstr "拇指 Shift" #: ../engine/python2/engine.py:450 ../engine/python2/engine.py:935 #: ../engine/python3/engine.py:451 ../engine/python3/engine.py:930 #: ../setup/python2/main.py:407 ../setup/python3/main.py:412 msgid "Segment mode" msgstr "分段模式" #: ../engine/python2/engine.py:456 ../engine/python3/engine.py:457 msgid "Switch conversion mode" msgstr "切换转换模式" #: ../engine/python2/engine.py:466 ../engine/python3/engine.py:467 #: ../setup/python2/setup.ui.h:15 ../setup/python3/setup.ui.h:15 msgid "Multiple segment" msgstr "连文节" #: ../engine/python2/engine.py:475 ../engine/python3/engine.py:476 #: ../setup/python2/setup.ui.h:16 ../setup/python3/setup.ui.h:16 msgid "Single segment" msgstr "单文节" #: ../engine/python2/engine.py:484 ../engine/python3/engine.py:485 #: ../setup/python2/setup.ui.h:17 ../setup/python3/setup.ui.h:17 msgid "Immediate conversion (multiple segment)" msgstr "逐次变换(连文节)" #: ../engine/python2/engine.py:493 ../engine/python3/engine.py:494 #: ../setup/python2/setup.ui.h:18 ../setup/python3/setup.ui.h:18 msgid "Immediate conversion (single segment)" msgstr "逐次变换(单文节)" #: ../engine/python2/engine.py:526 ../engine/python2/engine.py:997 #: ../engine/python3/engine.py:527 ../engine/python3/engine.py:992 #: ../setup/python2/main.py:410 ../setup/python3/main.py:415 msgid "Dictionary mode" msgstr "词典模式" #: ../engine/python2/engine.py:532 ../engine/python3/engine.py:533 msgid "Switch dictionary" msgstr "切换词典" #: ../engine/python2/engine.py:615 ../engine/python3/engine.py:615 #: ../setup/python2/main.py:413 ../setup/python3/main.py:418 msgid "Dictionary - Anthy" msgstr "词典 - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: ../engine/python2/engine.py:621 ../engine/python3/engine.py:620 msgid "Dic" msgstr "辞" #: ../engine/python2/engine.py:628 ../engine/python3/engine.py:627 msgid "Configure dictionaries" msgstr "配置词典" #: ../engine/python2/engine.py:638 ../engine/python3/engine.py:637 msgid "Edit dictionaries" msgstr "编辑词典" #: ../engine/python2/engine.py:640 ../engine/python3/engine.py:639 msgid "Launch the dictionary tool" msgstr "启动词典工具" #: ../engine/python2/engine.py:647 ../engine/python3/engine.py:646 msgid "Add words" msgstr "添加单词" #: ../engine/python2/engine.py:649 ../engine/python3/engine.py:648 msgid "Add words to the dictionary" msgstr "添加单词到词典里" #: ../setup/python2/anthyprefs.py.in:1105 ../setup/python2/setup.ui.h:36 #: ../setup/python3/anthyprefs.py.in:1098 ../setup/python3/setup.ui.h:36 msgid "General" msgstr "常规" #: ../setup/python2/anthyprefs.py.in:1116 #: ../setup/python3/anthyprefs.py.in:1109 msgid "Zip Code Conversion" msgstr "邮编转换" #: ../setup/python2/anthyprefs.py.in:1127 #: ../setup/python3/anthyprefs.py.in:1120 msgid "Symbol" msgstr "符号" #: ../setup/python2/anthyprefs.py.in:1138 #: ../setup/python3/anthyprefs.py.in:1131 msgid "Old Character Style" msgstr "旧字形" #: ../setup/python2/anthyprefs.py.in:1148 #: ../setup/python3/anthyprefs.py.in:1141 msgid "Era" msgstr "纪年" #: ../setup/python2/anthyprefs.py.in:1158 #: ../setup/python3/anthyprefs.py.in:1151 msgid "Emoji" msgstr "表情符号" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:1 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:1 msgid "IBus Anthy Setup" msgstr "IBus Anthy 设置" #: ../setup/python2/ibus-setup-anthy.desktop.in.in.h:2 #: ../setup/python3/ibus-setup-anthy.desktop.in.in.h:2 msgid "Set up IBus Anthy engine" msgstr "IBus Anthy 引擎设置" #. self.__run_message_dialog needs self.__builder. #: ../setup/python2/main.py:133 ../setup/python3/main.py:136 msgid "ibus is not running." msgstr "ibus 没有运行。" #: ../setup/python2/main.py:188 ../setup/python3/main.py:191 msgid "Menu label" msgstr "菜单标签" #: ../setup/python2/main.py:207 ../setup/python3/main.py:210 msgid "Command" msgstr "命令" #: ../setup/python2/main.py:211 ../setup/python3/main.py:214 msgid "Shortcut" msgstr "快捷键" #: ../setup/python2/main.py:256 ../setup/python3/main.py:259 msgid "Description" msgstr "描述" #. Translators: "Embd" is an abbreviation of "embedded". #: ../setup/python2/main.py:264 ../setup/python3/main.py:267 msgid "Embd" msgstr "嵌" #. Translators: "Sgl" is an abbreviation of "single". #: ../setup/python2/main.py:272 ../setup/python3/main.py:275 msgid "Sgl" msgstr "单" #: ../setup/python2/main.py:447 ../setup/python2/main.py:483 #: ../setup/python3/main.py:452 ../setup/python3/main.py:488 msgid "Input Chars" msgstr "输入字符" #: ../setup/python2/main.py:449 ../setup/python2/main.py:485 #: ../setup/python3/main.py:454 ../setup/python3/main.py:490 msgid "Output Chars" msgstr "输出字符" #: ../setup/python2/main.py:531 ../setup/python3/main.py:536 msgid "Input" msgstr "输入" #: ../setup/python2/main.py:533 ../setup/python3/main.py:538 msgid "Single" msgstr "单" #: ../setup/python2/main.py:535 ../setup/python3/main.py:540 msgid "Left" msgstr "左手" #: ../setup/python2/main.py:537 ../setup/python3/main.py:542 msgid "Right" msgstr "右手" #: ../setup/python2/main.py:619 ../setup/python3/main.py:624 msgid "Customize Romaji Key Table" msgstr "自定义罗马字键表" #: ../setup/python2/main.py:620 ../setup/python2/setup.ui.h:54 #: ../setup/python3/main.py:625 ../setup/python3/setup.ui.h:54 msgid "_Romaji Key Table:" msgstr "罗马字键表 (_R):" #: ../setup/python2/main.py:621 ../setup/python2/main.py:627 #: ../setup/python3/main.py:626 ../setup/python3/main.py:632 msgid "_Output Chars" msgstr "输出字符(_O)" #: ../setup/python2/main.py:622 ../setup/python2/main.py:1122 #: ../setup/python2/main.py:1270 ../setup/python2/setup.ui.h:27 #: ../setup/python3/main.py:627 ../setup/python3/main.py:1116 #: ../setup/python3/main.py:1264 ../setup/python3/setup.ui.h:27 msgid "Default" msgstr "默认" #: ../setup/python2/main.py:625 ../setup/python3/main.py:630 msgid "Customize Kana Key Table" msgstr "自定义假名键表" #: ../setup/python2/main.py:626 ../setup/python2/setup.ui.h:56 #: ../setup/python3/main.py:631 ../setup/python3/setup.ui.h:56 msgid "_Kana Key Table:" msgstr "假名键表 (_K):" #: ../setup/python2/main.py:628 ../setup/python3/main.py:633 msgid "Japanese Keyboard Layout" msgstr "日语键盘布局" #: ../setup/python2/main.py:629 ../setup/python3/main.py:634 msgid "U.S. Keyboard Layout" msgstr "美国键盘布局" #: ../setup/python2/main.py:632 ../setup/python3/main.py:637 msgid "Customize Thumb Shift Key Table" msgstr "自定义拇指 Shift 键表" #: ../setup/python2/main.py:633 ../setup/python3/main.py:638 msgid "_Thumb Shift Key Table:" msgstr "拇指 Shift 键表(_T):" #: ../setup/python2/main.py:634 ../setup/python3/main.py:639 msgid "Single _Output Chars" msgstr "单输出字符(_O)" #: ../setup/python2/main.py:635 ../setup/python3/main.py:640 msgid "Base" msgstr "基本" #: ../setup/python2/main.py:636 ../setup/python3/main.py:641 msgid "NICOLA-J key extension" msgstr "NICOLA-J 按键扩展" #: ../setup/python2/main.py:637 ../setup/python3/main.py:642 msgid "NICOLA-A key extension" msgstr "NICOLA-A 按键扩展" #: ../setup/python2/main.py:638 ../setup/python3/main.py:643 msgid "NICOLA-F key extension" msgstr "NICOLA-F 按键扩展" #: ../setup/python2/main.py:639 ../setup/python3/main.py:644 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J 按键扩展" #: ../setup/python2/main.py:640 ../setup/python3/main.py:645 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A 按键扩展" #: ../setup/python2/main.py:641 ../setup/python3/main.py:646 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F 按键扩展" #: ../setup/python2/main.py:642 ../setup/python3/main.py:647 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J 按键扩展" #: ../setup/python2/main.py:643 ../setup/python3/main.py:648 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A 按键扩展" #: ../setup/python2/main.py:644 ../setup/python3/main.py:649 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F 按键扩展" #: ../setup/python2/main.py:788 ../setup/python3/main.py:793 msgid "Your choosed file has already been added: " msgstr "所选文件已被添加过: " #: ../setup/python2/main.py:792 ../setup/python3/main.py:797 msgid "The file you have chosen does not exist: " msgstr "所选文件不存在: " #: ../setup/python2/main.py:796 ../setup/python3/main.py:801 msgid "Your choosed file is a directory: " msgstr "所选文件为目录: " #: ../setup/python2/main.py:800 ../setup/python3/main.py:805 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "不能在 Anthy 私有目录中添加词典: " #: ../setup/python2/main.py:807 ../setup/python3/main.py:812 msgid "Your file path is not good: " msgstr "文件路径不正确: " #: ../setup/python2/main.py:986 ../setup/python3/main.py:989 msgid "The engine xml file does not exist: " msgstr "引擎 xml 文件不存在: " #: ../setup/python2/main.py:1102 ../setup/python3/main.py:1096 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "Anthy 键盘布局已更改。请重启 ibus 以重新加载布局。" #: ../setup/python2/main.py:1231 ../setup/python3/main.py:1225 msgid "Confirmation" msgstr "" #: ../setup/python2/main.py:1233 ../setup/python3/main.py:1227 msgid "You are about to close the setup dialog, is that OK?" msgstr "" #: ../setup/python2/main.py:1248 ../setup/python3/main.py:1242 msgid "Notice!" msgstr "" #: ../setup/python2/main.py:1250 ../setup/python3/main.py:1244 msgid "" "You are about to close the setup dialog without saving your changes, is that " "OK?" msgstr "" #: ../setup/python2/main.py:1371 ../setup/python3/main.py:1365 msgid "Please specify Input Chars" msgstr "请指定输入字符" #: ../setup/python2/main.py:1374 ../setup/python3/main.py:1368 msgid "Please specify Output Chars" msgstr "请指定输出字符" #: ../setup/python2/main.py:1377 ../setup/python3/main.py:1371 msgid "Please specify Left Thumb Shift Chars" msgstr "请指定左拇指 Shift 字符" #: ../setup/python2/main.py:1380 ../setup/python3/main.py:1374 msgid "Please specify Right Thumb Shift Chars" msgstr "请指定右拇指 Shift 字符" #: ../setup/python2/main.py:1393 ../setup/python2/main.py:1437 #: ../setup/python3/main.py:1387 ../setup/python3/main.py:1431 msgid "Your custom key is not assigned in any sections. Maybe a bug." msgstr "" #: ../setup/python2/main.py:1503 ../setup/python2/main.py:1590 #: ../setup/python3/main.py:1497 ../setup/python3/main.py:1584 msgid "Your file does not exist: " msgstr "文件不存在: " #: ../setup/python2/main.py:1513 ../setup/python3/main.py:1507 msgid "Open Dictionary File" msgstr "打开词典文件" #: ../setup/python2/main.py:1516 ../setup/python2/main.py:1522 #: ../setup/python2/setup.ui.h:90 ../setup/python3/main.py:1510 #: ../setup/python3/main.py:1516 ../setup/python3/setup.ui.h:90 msgid "_Cancel" msgstr "取消(_C)" #: ../setup/python2/main.py:1517 ../setup/python3/main.py:1511 msgid "_Open" msgstr "打开(_O)" #: ../setup/python2/main.py:1520 ../setup/python3/main.py:1514 msgid "Edit Dictionary File" msgstr "编辑词典文件" #: ../setup/python2/main.py:1523 ../setup/python2/main.py:1618 #: ../setup/python2/setup.ui.h:91 ../setup/python3/main.py:1517 #: ../setup/python3/main.py:1612 ../setup/python3/setup.ui.h:91 msgid "_OK" msgstr "确定(_O)" #: ../setup/python2/main.py:1534 ../setup/python3/main.py:1528 msgid "Your choosed file is not correct." msgstr "所选文件不正确。" #: ../setup/python2/main.py:1563 ../setup/python3/main.py:1557 msgid "You cannot delete the system dictionary." msgstr "无法删除系统词典。" #: ../setup/python2/main.py:1586 ../setup/python3/main.py:1580 msgid "Your file is not good." msgstr "文件不正确。" #: ../setup/python2/main.py:1616 ../setup/python3/main.py:1610 msgid "View Dictionary File" msgstr "查看词典文件" #: ../setup/python2/main.py:1787 ../setup/python3/main.py:1781 msgid "Please press a key (or a key combination)" msgstr "请按下一个键盘按键(或者按键组合)" #: ../setup/python2/main.py:1788 ../setup/python3/main.py:1782 msgid "The dialog will be closed when the key is released" msgstr "当按键被按下,这个对话框将会自动关闭" #: ../setup/python2/main.py:1808 ../setup/python2/main.py:1829 #: ../setup/python3/main.py:1802 ../setup/python3/main.py:1823 msgid "Invalid keysym" msgstr "" #: ../setup/python2/main.py:1809 ../setup/python2/main.py:1830 #: ../setup/python3/main.py:1803 ../setup/python3/main.py:1824 msgid "This keysym is not valid" msgstr "" #: ../setup/python2/setup.ui.h:6 ../setup/python3/setup.ui.h:6 msgid "NICOLA-J" msgstr "NICOLA-J" #: ../setup/python2/setup.ui.h:7 ../setup/python3/setup.ui.h:7 msgid "NICOLA-A" msgstr "NICOLA-A" #: ../setup/python2/setup.ui.h:8 ../setup/python3/setup.ui.h:8 msgid "NICOLA-F" msgstr "NICOLA-F" #: ../setup/python2/setup.ui.h:9 ../setup/python3/setup.ui.h:9 msgid "None" msgstr "无" #: ../setup/python2/setup.ui.h:10 ../setup/python3/setup.ui.h:10 msgid "FMV KB231 key extension" msgstr "FMV KB231 按键扩展" #: ../setup/python2/setup.ui.h:11 ../setup/python3/setup.ui.h:11 msgid "FMV KB611 key extension" msgstr "FMV KB611 按键扩展" #: ../setup/python2/setup.ui.h:19 ../setup/python3/setup.ui.h:19 msgid "Keep numpad codes" msgstr "" #: ../setup/python2/setup.ui.h:20 ../setup/python3/setup.ui.h:20 msgid "Convert characters" msgstr "转换字符" #: ../setup/python2/setup.ui.h:21 ../setup/python3/setup.ui.h:21 msgid "Do nothing" msgstr "保持不变" #: ../setup/python2/setup.ui.h:22 ../setup/python3/setup.ui.h:22 msgid "Automatically convert" msgstr "自动转换" #: ../setup/python2/setup.ui.h:23 ../setup/python3/setup.ui.h:23 msgid "Automatically commit" msgstr "自动提交" #: ../setup/python2/setup.ui.h:24 ../setup/python3/setup.ui.h:24 msgid "Clear" msgstr "清除" #: ../setup/python2/setup.ui.h:25 ../setup/python3/setup.ui.h:25 msgid "Commit" msgstr "提交" #: ../setup/python2/setup.ui.h:26 ../setup/python3/setup.ui.h:26 msgid "Hold" msgstr "保持" #: ../setup/python2/setup.ui.h:28 ../setup/python3/setup.ui.h:28 msgid "ATOK" msgstr "ATOK" #: ../setup/python2/setup.ui.h:29 ../setup/python3/setup.ui.h:29 msgid "Wnn" msgstr "Wnn" #: ../setup/python2/setup.ui.h:30 ../setup/python3/setup.ui.h:30 msgid "Setup - IBus-Anthy" msgstr "设置 - IBus-Anthy" #: ../setup/python2/setup.ui.h:31 ../setup/python3/setup.ui.h:31 msgid "_Input Mode:" msgstr "输入模式(_I):" #: ../setup/python2/setup.ui.h:32 ../setup/python3/setup.ui.h:32 msgid "_Typing Method:" msgstr "键入方法(_T):" #: ../setup/python2/setup.ui.h:33 ../setup/python3/setup.ui.h:33 msgid "Conversion _Mode:" msgstr "转换模式(_M):" #: ../setup/python2/setup.ui.h:34 ../setup/python3/setup.ui.h:34 msgid "Initial Setting" msgstr "初始设置" #: ../setup/python2/setup.ui.h:35 ../setup/python3/setup.ui.h:35 msgid "Menu Visibility on Status Icon" msgstr "状态图标上的菜单显示" #: ../setup/python2/setup.ui.h:37 ../setup/python3/setup.ui.h:37 msgid "_Period Style:" msgstr "点号样式(_P):" #: ../setup/python2/setup.ui.h:38 ../setup/python3/setup.ui.h:38 msgid "Symbo_l Style:" msgstr "标号样式(_L):" #: ../setup/python2/setup.ui.h:39 ../setup/python3/setup.ui.h:39 msgid "Numpad _Key Type:" msgstr "数字键类型(_K):" #: ../setup/python2/setup.ui.h:40 ../setup/python3/setup.ui.h:40 msgid "_Behavior on Period:" msgstr "输入点号时的行为(_B):" #: ../setup/python2/setup.ui.h:41 ../setup/python3/setup.ui.h:41 msgid "Behavior on _Focus Out:" msgstr "失去焦点时的行为(_F):" #: ../setup/python2/setup.ui.h:42 ../setup/python3/setup.ui.h:42 msgid "Behavior" msgstr "行为" #: ../setup/python2/setup.ui.h:43 ../setup/python3/setup.ui.h:43 msgid "Candidate _Window Page Size:" msgstr "候选项窗口条目数(_W):" #: ../setup/python2/setup.ui.h:44 ../setup/python3/setup.ui.h:44 msgid "Convert _symbols with the one column width" msgstr "将符号转换为半角(_S)" #: ../setup/python2/setup.ui.h:45 ../setup/python3/setup.ui.h:45 msgid "Convert _numbers with the one column width" msgstr "将数字转换为半角(_N)" #: ../setup/python2/setup.ui.h:46 ../setup/python3/setup.ui.h:46 msgid "Con_vert spaces with the one column width" msgstr "将空格转换为半角(_V)" #: ../setup/python2/setup.ui.h:47 ../setup/python3/setup.ui.h:47 msgid "" "Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in " "preedit" msgstr "" #: ../setup/python2/setup.ui.h:48 ../setup/python3/setup.ui.h:48 msgid "Other" msgstr "其他" #: ../setup/python2/setup.ui.h:49 ../setup/python3/setup.ui.h:49 msgid "Conversion" msgstr "转换" #: ../setup/python2/setup.ui.h:50 ../setup/python3/setup.ui.h:50 msgid "_Shortcut Type:" msgstr "快捷键类型(_S):" #: ../setup/python2/setup.ui.h:51 ../setup/python3/setup.ui.h:51 msgid "De_fault" msgstr "默认(_F)" #: ../setup/python2/setup.ui.h:52 ../setup/python3/setup.ui.h:52 msgid "_Edit" msgstr "编辑(_E)" #: ../setup/python2/setup.ui.h:53 ../setup/python3/setup.ui.h:53 msgid "Key Binding" msgstr "快捷键映射" #: ../setup/python2/setup.ui.h:55 ../setup/python3/setup.ui.h:55 msgid "Romaji" msgstr "罗马字" #: ../setup/python2/setup.ui.h:57 ../setup/python3/setup.ui.h:57 msgid "Kana" msgstr "假名" #: ../setup/python2/setup.ui.h:58 ../setup/python3/setup.ui.h:58 msgid "Keyboad _layout:" msgstr "键盘布局(_L):" #: ../setup/python2/setup.ui.h:59 ../setup/python3/setup.ui.h:59 msgid "Keyboard layout" msgstr "键盘布局" #: ../setup/python2/setup.ui.h:60 ../setup/python3/setup.ui.h:60 msgid "Typing Method" msgstr "键入方法" #: ../setup/python2/setup.ui.h:61 ../setup/python3/setup.ui.h:61 msgid "_Left Thumb Shift Key:" msgstr "左拇指 Shift 键(_L):" #: ../setup/python2/setup.ui.h:62 ../setup/python3/setup.ui.h:62 msgid "Right _Thumb Shift Key:" msgstr "右拇指 Shift 键(_T):" #: ../setup/python2/setup.ui.h:63 ../setup/python3/setup.ui.h:63 msgid "Adjust _input method layout to system keyboard layout" msgstr "" #: ../setup/python2/setup.ui.h:64 ../setup/python3/setup.ui.h:64 msgid "Adjust IM layout to XKB layout" msgstr "" #: ../setup/python2/setup.ui.h:65 ../setup/python3/setup.ui.h:65 msgid "Input _Method Layout:" msgstr "输入法布局(_M):" #: ../setup/python2/setup.ui.h:66 ../setup/python3/setup.ui.h:66 msgid "Restart IBus when you change the keyboard layout" msgstr "请在更改键盘布局后重新启动 IBus" #: ../setup/python2/setup.ui.h:67 ../setup/python3/setup.ui.h:67 msgid "Restart IBus when you change XKB" msgstr "" #: ../setup/python2/setup.ui.h:68 ../setup/python3/setup.ui.h:68 msgid "_Additional Key Arrangement:" msgstr "" #: ../setup/python2/setup.ui.h:69 ../setup/python3/setup.ui.h:69 msgid "" "'~', '『', '¢', '£' and so on can be output with " "Thumb Shift key" msgstr "" #: ../setup/python2/setup.ui.h:70 ../setup/python3/setup.ui.h:70 msgid "" "You do not have to reconfigure the system keyboard layout for \"Additional " "Key Arrangement\" since this option changes input method layout only in case " "input method is turned on." msgstr "" #: ../setup/python2/setup.ui.h:71 ../setup/python3/setup.ui.h:71 msgid "" "You do not have to reconfigure XKB since this option changes IM layout only " "with IM on." msgstr "" #: ../setup/python2/setup.ui.h:72 ../setup/python3/setup.ui.h:72 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "" #: ../setup/python2/setup.ui.h:73 ../setup/python3/setup.ui.h:73 msgid "Seion + Shift can output Handakuon" msgstr "清音 + Shift 可输出半浊音" #: ../setup/python2/setup.ui.h:74 ../setup/python3/setup.ui.h:74 msgid "Thumb _Shift Key Table:" msgstr "拇指 Shift 键表(_S):" #: ../setup/python2/setup.ui.h:75 ../setup/python3/setup.ui.h:75 msgid "Thumb Shift Layout" msgstr "拇指 Shℹft 布局" #: ../setup/python2/setup.ui.h:76 ../setup/python3/setup.ui.h:76 msgid "Thumb Shift" msgstr "拇指 Shift" #: ../setup/python2/setup.ui.h:77 ../setup/python3/setup.ui.h:77 msgid "_Edit Dictionary Command:" msgstr "编辑词典命令(_E):" #: ../setup/python2/setup.ui.h:78 ../setup/python3/setup.ui.h:78 msgid "_Add Word Command:" msgstr "添加单词命令 (_A):" #: ../setup/python2/setup.ui.h:79 ../setup/python3/setup.ui.h:79 msgid "Default Dictionary Configuration" msgstr "默认词典配置" #: ../setup/python2/setup.ui.h:80 ../setup/python3/setup.ui.h:80 msgid "_View" msgstr "查看(_V)" #: ../setup/python2/setup.ui.h:81 ../setup/python3/setup.ui.h:81 msgid "_Add" msgstr "添加(_A)" #: ../setup/python2/setup.ui.h:82 ../setup/python3/setup.ui.h:82 msgid "_Delete" msgstr "删除(_D)" #: ../setup/python2/setup.ui.h:83 ../setup/python3/setup.ui.h:83 msgid "_Up" msgstr "向上(_U)" #: ../setup/python2/setup.ui.h:84 ../setup/python3/setup.ui.h:84 msgid "You can change the order on language bar" msgstr "可以更改语言栏上的顺序" #: ../setup/python2/setup.ui.h:85 ../setup/python3/setup.ui.h:85 msgid "_Down" msgstr "向下(_D)" #: ../setup/python2/setup.ui.h:86 ../setup/python3/setup.ui.h:86 msgid "Extended Dictionaries" msgstr "扩展词典" #: ../setup/python2/setup.ui.h:87 ../setup/python3/setup.ui.h:87 msgid "Dictionary" msgstr "词典" #: ../setup/python2/setup.ui.h:88 ../setup/python3/setup.ui.h:88 msgid "About" msgstr "关于" #: ../setup/python2/setup.ui.h:89 ../setup/python3/setup.ui.h:89 msgid "_Apply" msgstr "应用(_A)" #: ../setup/python2/setup.ui.h:92 ../setup/python3/setup.ui.h:92 msgid "Edit Shortcut" msgstr "编辑快捷键" #: ../setup/python2/setup.ui.h:93 ../setup/python3/setup.ui.h:93 msgid "Key Code:" msgstr "按键:" #: ../setup/python2/setup.ui.h:94 ../setup/python3/setup.ui.h:94 msgid "Modifier:" msgstr "修饰键:" #: ../setup/python2/setup.ui.h:95 ../setup/python3/setup.ui.h:95 msgid "A_lternate" msgstr "A_lt" #: ../setup/python2/setup.ui.h:96 ../setup/python3/setup.ui.h:96 msgid "Co_ntrol" msgstr "Co_ntrol" #: ../setup/python2/setup.ui.h:97 ../setup/python3/setup.ui.h:97 msgid "_Shift" msgstr "_Shift" #: ../setup/python2/setup.ui.h:98 ../setup/python3/setup.ui.h:98 msgid "_Refresh" msgstr "刷新(_R)" #: ../setup/python2/setup.ui.h:99 ../setup/python3/setup.ui.h:99 msgid "_Input Characters" msgstr "输入字符(_I)" #: ../setup/python2/setup.ui.h:100 ../setup/python3/setup.ui.h:100 msgid "_Output Characters" msgstr "输入字符(_O)" #: ../setup/python2/setup.ui.h:101 ../setup/python3/setup.ui.h:101 msgid "_Left Thumb Shift" msgstr "左拇指 Shift (_L)" #: ../setup/python2/setup.ui.h:102 ../setup/python3/setup.ui.h:102 msgid "_Right Thumb Shift" msgstr "右拇指 Shift (_R)" #: ../setup/python2/setup.ui.h:103 ../setup/python3/setup.ui.h:103 msgid "_Remove" msgstr "删除(_R)" #: ../setup/python2/setup.ui.h:104 ../setup/python3/setup.ui.h:104 msgid "_Close" msgstr "关闭(_C)" #: ../setup/python2/setup.ui.h:105 ../setup/python3/setup.ui.h:105 msgid "_Short Label:" msgstr "短标签(_S):" #: ../setup/python2/setup.ui.h:106 ../setup/python3/setup.ui.h:106 msgid "_Description:" msgstr "描述(_D):" #: ../setup/python2/setup.ui.h:107 ../setup/python3/setup.ui.h:107 msgid "_Use your dictionary alone with switching dictionaries" msgstr "通过切换词典单独使用所选词典(_U)" #: ../setup/python2/setup.ui.h:108 ../setup/python3/setup.ui.h:108 msgid "_Embed your dictionary in the system dictionary" msgstr "将用户词典嵌入系统词典中(_E)" #: ../setup/python2/setup.ui.h:109 ../setup/python3/setup.ui.h:109 msgid "Enable the _reverse conversion" msgstr "" #: ../setup/python2/setup.ui.h:110 ../setup/python3/setup.ui.h:110 msgid "The Anthy engine for the IBus input platform" msgstr "用于 IBus 输入平台的 Anthy 引擎" #: ../setup/python2/setup.ui.h:111 ../setup/python3/setup.ui.h:111 msgid "translator_credits" msgstr "" "lexuge , 2017\n" "Qiyu Yan , 2019\n" "黄鹏 \n" "Fedora 简体中文组 \n" "Hankel Bao , 2020\n" "刘韬 , 2023" ibus-anthy-1.5.17/python-config.py000077500000000000000000000026121475510605700170440ustar00rootroot00000000000000#!/usr/bin/python2.5 import sys import os import getopt from distutils import sysconfig valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', 'ldflags', 'help'] def exit_with_usage(code=1): print >>sys.stderr, "Usage: %s [%s]" % (sys.argv[0], '|'.join('--'+opt for opt in valid_opts)) sys.exit(code) try: opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) except getopt.error: exit_with_usage() if not opts: exit_with_usage() opt = opts[0][0] pyver = sysconfig.get_config_var('VERSION') getvar = sysconfig.get_config_var if opt == '--help': exit_with_usage(0) elif opt == '--prefix': print sysconfig.PREFIX elif opt == '--exec-prefix': print sysconfig.EXEC_PREFIX elif opt in ('--includes', '--cflags'): flags = ['-I' + sysconfig.get_python_inc(), '-I' + sysconfig.get_python_inc(plat_specific=True)] if opt == '--cflags': flags.extend(getvar('CFLAGS').split()) print ' '.join(flags) elif opt in ('--libs', '--ldflags'): libs = getvar('LIBS').split() + getvar('SYSLIBS').split() libs.append('-lpython'+pyver) # add the prefix/lib/pythonX.Y/config dir, but only if there is no # shared library in prefix/lib/. if opt == '--ldflags' and not getvar('Py_ENABLE_SHARED'): libs.insert(0, '-L' + getvar('LIBPL')) print ' '.join(libs) ibus-anthy-1.5.17/setup/000077500000000000000000000000001475510605700150425ustar00rootroot00000000000000ibus-anthy-1.5.17/setup/Makefile.am000066400000000000000000000017121475510605700170770ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2014 Takao Fujiwara # Copyright (c) 2014 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. SUBDIRS = if ENABLE_PYTHON2 SUBDIRS += python2 endif if ENABLE_PYTHON3 SUBDIRS += python3 endif ibus-anthy-1.5.17/setup/python2/000077500000000000000000000000001475510605700164455ustar00rootroot00000000000000ibus-anthy-1.5.17/setup/python2/Makefile.am000066400000000000000000000062251475510605700205060ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. desktop_in_in_files = ibus-setup-anthy.desktop.in.in desktop_in_files = $(desktop_in_in_files:.in.in=.in) $(desktop_in_files): %.desktop.in: %.desktop.in.in Makefile $(AM_V_GEN) sed \ -e "s|\@libexecdir\@|$(libexecdir)|" \ -e "s|\@pkgdatadir\@|$(pkgdatadir)|" \ $< > $@.tmp && mv $@.tmp $@ desktopdir=$(datadir)/applications desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) $(desktop_DATA): $(desktop_in_files) Makefile $(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ BUILT_SOURCES = \ _config.py \ $(NULL) libexec_SCRIPTS = ibus-setup-anthy setup_anthy_PYTHON = \ _config.py \ anthyprefs.py \ main.py \ prefs.py \ setup.ui \ $(NULL) setup_anthy_built_files = \ $(BUILT_SOURCES) \ $(libexec_SCRIPTS) \ $(NULL) setup_anthy_built_in_files = $(addsuffix .in, $(setup_anthy_built_files)) setup_anthydir = $(datadir)/ibus-anthy/setup CONFIG_CLEAN_FILES = \ $(BUILT_SOURCES) \ $(NULL) CLEANFILES = \ $(BUILT_SOURCES) \ $(desktop_DATA) \ $(desktop_in_files) \ $(libexec_SCRIPTS) \ *.pyc \ $(NULL) EXTRA_DIST = \ $(desktop_in_in_files) \ $(setup_anthy_built_in_files) \ $(NULL) ibus-setup-anthy: ibus-setup-anthy.in sed -e "s|\@prefix\@|$(prefix)|g" \ -e "s|\@localedir\@|$(localedir)|g" \ -e "s|\@PYTHON\@|$(PYTHON)|g" \ $< > $@ _config.py: _config.py.in sed -e "s|\@pkgdatadir\@|$(pkgdatadir)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@datadir\@|$(datadir)|g" \ -e "s|\@ANTHY_PC\@|$(ANTHY_PC)|g" \ -e "s|\@LAYOUT\@|$(LAYOUT)|g" \ -e "s|\@SYMBOL_CHAR_INT\@|$(SYMBOL_CHAR_INT)|g" \ -e "s|\@ICON_PREFERENCE\@|$(ICON_PREFERENCE)|g" \ -e "s|\@VERSION\@|$(VERSION)|g" \ $< > $@ # Need a time lag between .py and .py.in files to build .py files # because *_PYTHON valuables are installed in the tarball. dist-hook: @sleep 1; \ for in_file in $(setup_anthy_built_in_files) ; do \ if [ -f $(distdir)/$(srcdir)/$$in_file ] ; then \ touch $(distdir)/$(srcdir)/$$in_file; \ fi; \ done; test: $(ENV_IBUS_TEST) DBUS_DEBUG=true \ LANG=en_US \ PYTHONPATH=$(abs_top_srcdir):$(pyexecdir) \ IBUS_LOCALEDIR=@localedir@ \ $(PYTHON) $(srcdir)/main.py ibus-anthy-1.5.17/setup/python2/_config.py.in000077700000000000000000000000001475510605700267042../../engine/python2/_config.py.inustar00rootroot00000000000000ibus-anthy-1.5.17/setup/python2/anthyprefs.py000066400000000000000000000231201475510605700212000ustar00rootroot00000000000000# -*- coding: utf-8 -*- # vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys import _config as config from prefs import Prefs N_ = lambda a : a __all__ = ['AnthyPrefs'] class AnthyPrefs(Prefs): _char_to_config_key = None def __init__(self): super(AnthyPrefs, self).__init__() def get_japanese_ordered_list(self): return _japanese_ordered_list def get_version(self): return config.VERSION # Convert gsettings key to typing sequences # E.g. 'largea-bracketleft' to 'A[' def typing_from_config_key(self, gkeys): retval = '' for key in gkeys.split('-'): if key in _supported_gsettings_key_chars: retval += key continue try: ch = _config_key_to_char[key] except KeyError: print >> sys.stderr, 'Not supported key in gsettings', gkeys retval = '' break retval += ch return retval # Convert typing sequences to gsettings key. # E.g. 'A[' to 'largea-bracketleft' def typing_to_config_key(self, typing): retval = '' if self._char_to_config_key == None: self._char_to_config_key = {} for _key, _ch in _config_key_to_char.items(): self._char_to_config_key[_ch] = _key for ch in typing: try: # U+A5 needs to be UTF-8 since gconf values are # disk saved values. ch = ch.encode('utf-8') except: print >> sys.stderr, \ 'Failed to encode UTF-8:', ch if ch in _supported_gsettings_key_chars: if retval != '': retval += '-' retval += ch continue try: key = self._char_to_config_key[ch] except KeyError: print >> sys.stderr, 'Not supported key in gsettings', typing retval = '' break if retval != '': retval += '-' retval += key return retval def get_value(self, section, key): not_sorted = super(AnthyPrefs, self).get_value(section, key) if section == 'shortcut' and type(not_sorted) == dict: retval = dict.fromkeys(_cmd_keys, []) retval.update(not_sorted) return retval return not_sorted # Sad! dict.keys() doesn't return the saved order. # locale.strcoll() also just returns the Unicode code point. # Unicode order is wrong in Japanese large 'a' and small 'a'. # The workaround is to save the order here... _japanese_ordered_list = [ 'あ', 'い', 'う', 'え', 'お', 'ぁ', 'ぃ', 'ぅ', 'ぇ', 'ぉ', 'いぇ', 'うぁ', 'うぃ', 'うぅ', 'うぇ', 'うぉ', 'うゃ', 'うゅ', 'うょ', 'か', 'き', 'く', 'け', 'こ', 'ゕ', 'ゖ', 'ヵ', 'ヶ', 'が', 'ぎ', 'ぐ', 'げ', 'ご', 'きゃ', 'きぃ', 'きゅ', 'きぇ', 'きょ', 'くぁ', 'くぃ', 'くぅ', 'くぇ', 'くぉ', 'ぎゃ', 'ぎぃ', 'ぎゅ', 'ぎぇ', 'ぎょ', 'ぐぁ', 'ぐぃ', 'ぐぅ', 'ぐぇ', 'ぐぉ', 'さ', 'し', 'す', 'せ', 'そ', 'ざ', 'じ', 'ず', 'ぜ', 'ぞ', 'しゃ', 'しぃ', 'しゅ', 'しぇ', 'しょ', 'じゃ', 'じぃ', 'じゅ', 'じぇ', 'じょ', 'すぅぃ', 'すぇ', 'ずぇ', 'た', 'ち', 'つ', 'て', 'と', 'だ', 'ぢ', 'づ', 'で', 'ど', 'っ', 'ちゃ', 'ちぃ', 'ちゅ', 'ちぇ', 'ちょ', 'ぢぃ', 'ぢぇ', 'ぢゃ', 'ぢゅ', 'ぢょ', 'つぁ', 'つぃ', 'つぇ', 'つぉ', 'つゃ', 'つぃぇ', 'つゅ', 'つょ', 'づぁ', 'づぃ', 'づぇ', 'づぉ', 'づゃ', 'づぃぇ', 'づゅ', 'づょ', 'てぃ', 'てぇ', 'てゃ', 'てゅ', 'てょ', 'とぅ', 'でぃ', 'でぇ', 'でゃ', 'でゅ', 'でょ', 'どぅ', 'な', 'に', 'ぬ', 'ね', 'の', 'にぃ', 'にぇ', 'にゃ', 'にゅ', 'にょ', 'は', 'ひ', 'ふ', 'へ', 'ほ', 'ば', 'び', 'ぶ', 'べ', 'ぼ', 'ぱ', 'ぴ', 'ぷ', 'ぺ', 'ぽ', 'ひぃ', 'ひぇ', 'ひゃ', 'ひゅ', 'ひょ', 'びぃ', 'びぇ', 'びゃ', 'びゅ', 'びょ', 'ぴぃ', 'ぴぇ', 'ぴゃ', 'ぴゅ', 'ぴょ', 'ふぁ', 'ふぃ', 'ふぇ', 'ふぉ', 'ふゃ', 'ふゅ', 'ふょ', 'ぶぁ', 'ぶぇ', 'ぶぉ', 'ぷぁ', 'ぷぇ', 'ぷぉ', 'ま', 'み', 'む', 'め', 'も', 'みぃ', 'みぇ', 'みゃ', 'みゅ', 'みょ', 'や', 'ゆ', 'よ', 'ゃ', 'ゅ', 'ょ', 'ら', 'り', 'る', 'れ', 'ろ', 'りぃ', 'りぇ', 'りゃ', 'りゅ', 'りょ', 'わ', 'を', 'ん', 'ゎ', 'ゐ', 'ゑ', 'ー', 'ヴぁ', 'ヴぃ', 'ヴ', 'ヴぇ', 'ヴぉ', 'ヴゃ', 'ヴぃぇ', 'ヴゅ', 'ヴょ', ] # http://git.gnome.org/browse/glib/tree/gio/glib-compile-schemas.c#n765 # gsettings supports keys named by "abcdefghijklmnopqrstuvwxyz0123456789-" # and ibus-anthy uses '-' as the delimiter. _supported_gsettings_key_chars = "abcdefghijklmnopqrstuvwxyz0123456789" _config_key_to_char = { # no modifiers keys 'minus' : '-', 'asciicircum' : '^', 'at' : '@', 'bracketleft' : '[', 'semicolon' : ';', 'colon' : ':', 'bracketright' : ']', 'comma' : ',', 'period' : '.', 'slash' : '/', 'backslash' : '\\', # shift modifiered keys 'exclam' : '!', 'quotedbl' : '"', 'numbersign' : '#', 'dollar' : '$', 'percent' : '%', 'ampersand' : '&', 'apostrophe' : '\'', 'parenleft' : '(', 'parenright' : ')', 'asciitilde' : '~', 'equal' : '=', 'bar' : '|', 'largeq' : 'Q', 'largew' : 'W', 'largee' : 'E', 'larger' : 'R', 'larget' : 'T', 'largey' : 'Y', 'largeu' : 'U', 'largei' : 'I', 'largeo' : 'O', 'largep' : 'P', 'grave' : '`', 'braceleft' : '{', 'largea' : 'A', 'larges' : 'S', 'larged' : 'D', 'largef' : 'F', 'largeg' : 'G', 'largeh' : 'H', 'largej' : 'J', 'largek' : 'K', 'largel' : 'L', 'plus' : '+', 'asterisk' : '*', 'braceright' : '}', 'largez' : 'Z', 'largex' : 'X', 'largec' : 'C', 'largev' : 'V', 'largeb' : 'B', 'largen' : 'N', 'largem' : 'M', 'less' : '<', 'greater' : '>', 'question' : '?', 'underscore' : '_', 'yen' : '¥', } _cmd_keys = [ 'on_off', 'circle_input_mode', 'circle_kana_mode', 'circle_typing_method', 'circle_dict_method', 'latin_mode', 'wide_latin_mode', 'hiragana_mode', 'katakana_mode', 'half_katakana_mode', # 'cancel_pseudo_ascii_mode_key', 'hiragana_for_latin_with_shift', 'insert_space', 'insert_alternate_space', 'insert_half_space', 'insert_wide_space', 'backspace', 'delete', 'commit', 'convert', 'predict', 'cancel', 'cancel_all', 'escape_to_latin', 'reconvert', # 'do_nothing', 'select_first_candidate', 'select_last_candidate', 'select_next_candidate', 'select_prev_candidate', 'candidates_page_up', 'candidates_page_down', 'move_caret_first', 'move_caret_last', 'move_caret_forward', 'move_caret_backward', 'select_first_segment', 'select_last_segment', 'select_next_segment', 'select_prev_segment', 'shrink_segment', 'expand_segment', 'commit_first_segment', 'commit_selected_segment', 'select_candidates_1', 'select_candidates_2', 'select_candidates_3', 'select_candidates_4', 'select_candidates_5', 'select_candidates_6', 'select_candidates_7', 'select_candidates_8', 'select_candidates_9', 'select_candidates_0', 'convert_to_char_type_forward', 'convert_to_char_type_backward', 'convert_to_hiragana', 'convert_to_katakana', 'convert_to_half', 'convert_to_half_katakana', 'convert_to_wide_latin', 'convert_to_latin', 'convert_to_hiragana_all', 'convert_to_katakana_all', 'convert_to_half_all', 'convert_to_half_katakana_all', 'convert_to_wide_latin_all', 'convert_to_latin_all', 'dict_admin', 'add_word', 'start_setup', ] _dummy_translatable_strings = [ N_('General'), N_('Zip Code Conversion'), N_('Symbol'), N_('Old Character Style'), N_('Era'), N_('Emoji'), ] ibus-anthy-1.5.17/setup/python2/ibus-setup-anthy.desktop.in.in000066400000000000000000000002551475510605700242750ustar00rootroot00000000000000[Desktop Entry] Name=IBus Anthy Setup Comment=Set up IBus Anthy engine Exec=@libexecdir@/ibus-setup-anthy Icon=ibus-anthy NoDisplay=true Type=Application StartupNotify=true ibus-anthy-1.5.17/setup/python2/ibus-setup-anthy.in000066400000000000000000000020341475510605700222150ustar00rootroot00000000000000#!/bin/sh # vim:set noet ts=4: # # ibus-tmpl - The Input Bus template project # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-2016 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. export IBUS_LOCALEDIR=@localedir@ exec @PYTHON@ @prefix@/share/ibus-anthy/setup/main.py "$@" ibus-anthy-1.5.17/setup/python2/main.py000066400000000000000000002103201475510605700177410ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-2019 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. from os import environ, getuid, path import os, sys import locale import xml.dom.minidom import gettext from gettext import dgettext from gi import require_version as gi_require_version gi_require_version('Gio', '2.0') gi_require_version('GLib', '2.0') gi_require_version('Gtk', '3.0') gi_require_version('Gdk', '3.0') gi_require_version('GdkX11', '3.0') gi_require_version('Pango', '1.0') gi_require_version('IBus', '1.0') from gi.repository import Gio from gi.repository import GLib # set_prgname before importing other modules to show the name in warning # messages when import modules are failed. E.g. Gtk. GLib.set_prgname('ibus-setup-anthy') from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GdkX11 from gi.repository import Pango from gi.repository import IBus import _config as config from anthyprefs import AnthyPrefs DOMAINNAME = 'ibus-anthy' _ = lambda a : dgettext('ibus-anthy', a) def l_to_s(l): return str(sorted([str(s) for s in l])).replace('\'', '') def s_to_l(s): return [] if s == '[]' else s[1:-1].replace(' ', '').split(',') class AnthySetup(object): def __init__(self): # Python's locale module doesn't provide all methods on some # operating systems like FreeBSD try: locale.bindtextdomain(DOMAINNAME, config.LOCALEDIR) locale.bind_textdomain_codeset(DOMAINNAME, 'UTF-8') except AttributeError: pass gettext.bindtextdomain(DOMAINNAME, config.LOCALEDIR) gettext.bind_textdomain_codeset(DOMAINNAME, 'UTF-8') self.__prefs = AnthyPrefs() builder_file = path.join(path.dirname(__file__), 'setup.ui') self.__builder = builder = Gtk.Builder() builder.set_translation_domain(DOMAINNAME) builder.add_from_file(builder_file) toplevel = builder.get_object('main') parent_xid = 0 parent_wmname = None parent_wmclass = None try: parent_xid = int(environ['IBUS_SETUP_XID']) if parent_xid != 0: parent_wmname = 'ibus-setup' parent_wmclass = 'Ibus-setup' except: pass try: if parent_xid == 0: parent_xid = int(environ['GNOME_CONTROL_CENTER_XID']) if parent_xid != 0: parent_wmname = 'gnome-conrol-center' parent_wmclass = 'Gnome-conrol-center' except: pass if parent_xid != 0: def set_transient(obj, pspec): window = toplevel.get_window() if window == None: return parent_window = GdkX11.X11Window.foreign_new_for_display(Gdk.Display.get_default(), parent_xid) if parent_window != None: window.set_transient_for(parent_window) toplevel.set_wmclass(parent_wmname, parent_wmclass) toplevel.set_modal(True) toplevel.set_type_hint(Gdk.WindowTypeHint.DIALOG) toplevel.connect('notify::window', set_transient) toplevel.show() self.__init_bus_connected() def __init_bus_connected(self): builder = self.__builder prefs = self.__prefs self.__thumb_kb_layout_mode = None self.__thumb_kb_layout = None self.__japanese_ordered_dict = {} # glade 'icon_name' property has a custom scaling and it seems # to be difficult to show the complicated small icon in metacity. # This can add the pixbuf without scaling. anthydir = path.dirname(path.dirname(__file__)) if not anthydir: anthydir = '/usr/share/ibus-anthy' icon_path = path.join(anthydir, 'icons', 'ibus-anthy.png') if path.exists(icon_path): builder.get_object('main').set_icon_from_file(icon_path) else: icon_path = 'ibus-anthy' builder.get_object('main').set_icon_name(icon_path) for name in ['input-mode', 'typing-method', 'conversion-segment-mode', 'period-style', 'symbol-style', 'ten-key-mode', 'behavior-on-focus-out', 'behavior-on-period', 'half-width-symbol', 'half-width-number', 'half-width-space', 'latin-with-shift', 'thumb:keyboard-layout-mode', 'thumb:keyboard-layout', 'thumb:fmv-extension', 'thumb:handakuten']: section, key = self.__get_section_key(name) prefs.bind(section, key, builder.get_object(name), 'active', Gio.SettingsBindFlags.DEFAULT) prefs.bind('thumb', 'keyboard-layout-mode', builder.get_object('thumb:keyboard-layout'), 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN) tv = builder.get_object('menu-visible:treeview') ls = Gtk.ListStore(str, bool, str) tv.set_model(ls) column = Gtk.TreeViewColumn(' ') renderer = Gtk.CellRendererToggle() renderer.set_radio(False) renderer.connect('toggled', self.__renderer_toggled_cb, ls) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_menu_visible_cell_cb, 1) tv.append_column(column) column = Gtk.TreeViewColumn(_("Menu label")) renderer = Gtk.CellRendererText() column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__text_menu_visible_cell_cb, 2) tv.append_column(column) self.__append_menus_in_model() l = ['default', 'atok', 'wnn'] s_type = prefs.get_value('common', 'shortcut-type') s_type = s_type if s_type in l else 'default' builder.get_object('shortcut-type').set_active(l.index(s_type)) prefs.bind('common', 'page-size', builder.get_object('page-size').get_adjustment(), 'value', Gio.SettingsBindFlags.DEFAULT) tv = builder.get_object('shortcut') tv.append_column(Gtk.TreeViewColumn(_("Command"), Gtk.CellRendererText(), text=0)) renderer = Gtk.CellRendererText() renderer.set_property('ellipsize', Pango.EllipsizeMode.END) tv.append_column(Gtk.TreeViewColumn(_("Shortcut"), renderer, text=1)) tv.get_selection().connect_after('changed', self.on_selection_changed, 0) ls = Gtk.ListStore(str, str) shortcuts = self.__prefs.get_value('shortcut', s_type) for k in shortcuts.keys(): ls.append([k, l_to_s(shortcuts[k])]) tv.set_model(ls) self.__keymap = None GLib.idle_add(self.__update_keymap_label, priority = GLib.PRIORITY_LOW) self.__thumb_kb_layout_mode = builder.get_object('thumb:keyboard-layout-mode') self.__thumb_kb_layout = builder.get_object('thumb:keyboard-layout') self.__set_thumb_kb_label() for name in ['thumb:ls', 'thumb:rs']: section, key = self.__get_section_key(name) builder.get_object(name).set_text(prefs.get_value(section, key)) tv = builder.get_object('es:treeview') tv.append_column(Gtk.TreeViewColumn('', Gtk.CellRendererText(), text=0)) tv.get_selection().connect_after('changed', self.on_selection_changed, 1) tv.set_model(Gtk.ListStore(str)) key = 'dict-admin-command' cli = self.__get_dict_cli_from_list(prefs.get_value('common', key)) name = 'dict:entry-edit-dict-command' builder.get_object(name).set_text(cli) key = 'add-word-command' cli = self.__get_dict_cli_from_list(prefs.get_value('common', key)) name = 'dict:entry-add-word-command' builder.get_object(name).set_text(cli) tv = builder.get_object('dict:view') column = Gtk.TreeViewColumn(' ') renderer = Gtk.CellRendererText() column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__text_cell_data_cb, 1) tv.append_column(column) column = Gtk.TreeViewColumn(_("Description")) renderer = Gtk.CellRendererText() column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__text_cell_data_cb, 2) column.set_expand(True) tv.append_column(column) # Translators: "Embd" is an abbreviation of "embedded". column = Gtk.TreeViewColumn(_("Embd")) renderer = Gtk.CellRendererToggle() renderer.set_radio(False) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_cell_data_cb, 3) tv.append_column(column) # Translators: "Sgl" is an abbreviation of "single". column = Gtk.TreeViewColumn(_("Sgl")) renderer = Gtk.CellRendererToggle() renderer.set_radio(False) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_cell_data_cb, 4) tv.append_column(column) ''' Unfortunately reverse conversion is too slow. # Translators: "Rev" is an abbreviation of "reverse". column = Gtk.TreeViewColumn(_("Rev")) renderer = Gtk.CellRendererToggle() renderer.set_radio(False) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_cell_data_cb, 5) tv.append_column(column) ''' ls = Gtk.ListStore(str, str, str, bool, bool, bool) tv.set_model(ls) self.__append_dicts_in_model() self.__init_japanese_sort() self.__init_about_vbox(icon_path) builder.connect_signals(self) def __init_japanese_sort(self): japanese_ordered_dict = {} japanese_ordered_list = self.__prefs.get_japanese_ordered_list() for index, c in enumerate(japanese_ordered_list): japanese_ordered_dict[c] = index self.__japanese_ordered_dict = japanese_ordered_dict; def __init_about_vbox(self, icon_path): about_dialog = self.__builder.get_object('about_dialog') about_vbox = self.__builder.get_object('about_vbox') about_dialog.set_version(self.__prefs.get_version()) if icon_path != None: if icon_path[0] == '/': image = Gtk.Image.new_from_file(icon_path) about_dialog.set_logo(image.get_pixbuf()) else: icon_theme = Gtk.IconTheme.get_default() try: pixbuf = icon_theme.load_icon(icon_path, 48, 0) about_dialog.set_logo(pixbuf) except Exception, err: print >> sys.stderr, 'Not found icon', str(err) print >> sys.stderr, 'Need to run gtk-update-icon-cache' content_area = about_dialog.get_content_area() list = content_area.get_children() vbox = list[0] for w in vbox.get_children(): old_parent = w.props.parent w.unparent() w.emit('parent-set', old_parent) about_vbox.pack_start(w, False, False, 0) def __get_userhome(self): if 'HOME' not in environ: import pwd userhome = pwd.getpwuid(getuid()).pw_dir else: userhome = environ['HOME'] userhome = userhome.rstrip('/') return userhome def __get_section_key(self, name): i = name.find(':') if i > 0: section = name[:i] key = name[i + 1:] else: section = 'common' key = name return (section, key) def __run_message_dialog(self, message, type=Gtk.MessageType.INFO): dlg = Gtk.MessageDialog( transient_for=self.__builder.get_object('main'), message_type=type, buttons=Gtk.ButtonsType.OK, text=message) dlg.run() dlg.destroy() def _get_shortcut_sec(self): l = ['default', 'atok', 'wnn'] iter = self.__builder.get_object('shortcut-type').get_active_iter() model = self.__builder.get_object('shortcut-type').get_model() s_type = model[iter][0].lower() return 'shortcut/' + (s_type if s_type in l else 'default') def __get_shortcut_group(self): l = ['default', 'atok', 'wnn'] iter = self.__builder.get_object('shortcut-type').get_active_iter() model = self.__builder.get_object('shortcut-type').get_model() s_type = model[iter][0].lower() return s_type if s_type in l else 'default' def __japanese_tuple_sort(self, a, b): if a[1] == b[1]: return cmp(a[0], b[0]) elif a[1] in self.__japanese_ordered_dict and \ b[1] in self.__japanese_ordered_dict: return self.__japanese_ordered_dict[a[1]] - \ self.__japanese_ordered_dict[b[1]] elif a[1] not in self.__japanese_ordered_dict and \ b[1] in self.__japanese_ordered_dict: return 1 elif a[1] in self.__japanese_ordered_dict and \ b[1] not in self.__japanese_ordered_dict: return -1 else: return cmp(a[1], b[1]) def __japanese_thumb_sort(self, a, b): return cmp(a[0], b[0]) def __renderer_toggled_cb(self, renderer, path, model): prefs = self.__prefs enabled = not model[path][1] model[path][1] = enabled key = model[path][0] prefs.set_value('common', key, enabled) def __toggle_menu_visible_cell_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('menu-visible:treeview').get_model() active = l.get_value(iter, id) renderer.set_property('active', active) def __text_menu_visible_cell_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('menu-visible:treeview').get_model() text = l.get_value(iter, id) renderer.set_property('text', text) def __append_menus_in_model(self): prefs = self.__prefs l = self.__builder.get_object('menu-visible:treeview').get_model() l.append(['show-input-mode', prefs.get_value('common', 'show-input-mode'), _("Input mode")]) l.append(['show-typing-method', prefs.get_value('common', 'show-typing-method'), _("Typing method")]) l.append(['show-segment-mode', prefs.get_value('common', 'show-segment-mode'), _("Segment mode")]) l.append(['show-dict-mode', prefs.get_value('common', 'show-dict-mode'), _("Dictionary mode")]) l.append(['show-dict-config', prefs.get_value('common', 'show-dict-config'), _("Dictionary - Anthy")]) l.append(['show-preferences', prefs.get_value('common', 'show-preferences'), _("Preferences - Anthy")]) def __get_romaji_treeview_custom_key_table(self, method): prefs = self.__prefs rule = {} ls = Gtk.ListStore(str, str, str) tv = self.__builder.get_object('treeview_custom_key_table') section = 'romaji-typing-rule' keymap = prefs.get_value(section, 'list')[method] for key in keymap.keys(): value = keymap[key] ch = prefs.typing_from_config_key(key) if ch == '': continue # config.set_value(key, None) is not supported. if value != None and value != '': rule[ch] = value for key, value in sorted(rule.items(), \ cmp = self.__japanese_tuple_sort): ls.append(['romaji', key, value]) tv.set_model(None) tv.append_column(Gtk.TreeViewColumn(_(_("Input Chars")), Gtk.CellRendererText(), text=1)) tv.append_column(Gtk.TreeViewColumn(_(_("Output Chars")), Gtk.CellRendererText(), text=2)) tv.set_model(ls) return tv def __get_kana_treeview_custom_key_table(self, method): prefs = self.__prefs rule = {} ls = Gtk.ListStore(str, str, str) tv = self.__builder.get_object('treeview_custom_key_table') section = 'kana-typing-rule' keymap = prefs.get_value(section, 'list')[method] for key in keymap.keys(): value = keymap[key] ch = prefs.typing_from_config_key(key) if ch == '': continue # config.set_value(key, None) is not supported. if value != None and value != '': rule[ch] = value for key, value in sorted(rule.items(), \ cmp = self.__japanese_tuple_sort): ls.append(['kana', key, value]) tv.set_model(None) tv.append_column(Gtk.TreeViewColumn(_(_("Input Chars")), Gtk.CellRendererText(), text=1)) tv.append_column(Gtk.TreeViewColumn(_(_("Output Chars")), Gtk.CellRendererText(), text=2)) tv.set_model(ls) return tv def __get_thumb_treeview_custom_key_table(self, method): prefs = self.__prefs rule = {} ls = Gtk.ListStore(str, str, str, str, str) tv = self.__builder.get_object('treeview_custom_key_table') section = 'thumb-typing-rule' keymap = prefs.get_value(section, 'list')[method] for key in keymap.keys(): value = keymap[key] ch = prefs.typing_from_config_key(key) if ch == '': continue # config.set_value(key, None) is not supported. if value != None and len(value) == 3 and \ ((value[0] != None and value[0] != '') or \ (value[1] != None and value[1] != '') or \ (value[2] != None and value[2] != '')): rule[ch] = {} rule[ch][0] = value[0] rule[ch][1] = value[1] rule[ch][2] = value[2] for key, value in sorted(rule.items(), \ cmp = self.__japanese_thumb_sort): ls.append(['thumb', key, value[0], value[2], value[1]]) tv.set_model(None) tv.append_column(Gtk.TreeViewColumn(_(_("Input")), Gtk.CellRendererText(), text=1)) tv.append_column(Gtk.TreeViewColumn(_(_("Single")), Gtk.CellRendererText(), text=2)) tv.append_column(Gtk.TreeViewColumn(_(_("Left")), Gtk.CellRendererText(), text=3)) tv.append_column(Gtk.TreeViewColumn(_(_("Right")), Gtk.CellRendererText(), text=4)) tv.set_model(ls) return tv def __show_dialog_custom_key_table_extention(self, mode): hbox_combo = self.__builder.get_object('hbox_for_combobox_custom_key_table') label_left = self.__builder.get_object('label_left_thumb_shift_custom_key') entry_left = self.__builder.get_object('entry_left_thumb_shift_custom_key') label_right = self.__builder.get_object('label_right_thumb_shift_custom_key') entry_right = self.__builder.get_object('entry_right_thumb_shift_custom_key') if mode == 'thumb': hbox_combo.show() label_left.show() entry_left.show() label_right.show() entry_right.show() elif mode == 'kana': hbox_combo.show() label_left.hide() entry_left.hide() label_right.hide() entry_right.hide() else: hbox_combo.hide() label_left.hide() entry_left.hide() label_right.hide() entry_right.hide() def __connect_dialog_custom_key_table_buttons(self, mode): tv = self.__builder.get_object('treeview_custom_key_table') tv.get_selection().connect_after('changed', self.on_selection_custom_key_table_changed, 0) entry = self.__builder.get_object('entry_input_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) entry = self.__builder.get_object('entry_output_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) entry = self.__builder.get_object('entry_left_thumb_shift_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) entry = self.__builder.get_object('entry_right_thumb_shift_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) button = self.__builder.get_object('button_add_custom_key') button.set_sensitive(False) button.connect('clicked', self.on_btn_add_custom_key, mode) button = self.__builder.get_object('button_remove_custom_key') button.set_sensitive(False) button.connect('clicked', self.on_btn_remove_custom_key, tv) def __disconnect_dialog_custom_key_table_buttons(self): tv = self.__builder.get_object('treeview_custom_key_table') combobox = self.__builder.get_object('combobox_custom_key_table') if tv != None: for column in tv.get_columns(): tv.remove_column(column) for child in tv.get_children(): tv.remove(child) entry = self.__builder.get_object('entry_input_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) entry.set_text('') entry = self.__builder.get_object('entry_output_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) entry.set_text('') entry = self.__builder.get_object('entry_left_thumb_shift_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) entry = self.__builder.get_object('entry_right_thumb_shift_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) button = self.__builder.get_object('button_add_custom_key') button.disconnect_by_func(self.on_btn_add_custom_key) button = self.__builder.get_object('button_remove_custom_key') button.disconnect_by_func(self.on_btn_remove_custom_key) combobox.clear() combobox.disconnect_by_func(self.on_cb_custom_key_table_changed) def __run_dialog_custom_key_table(self, widget, mode): prefs = self.__prefs dlg = self.__builder.get_object('dialog_custom_key_table') dlg.set_transient_for(widget.get_toplevel()) label = self.__builder.get_object('label_custom_key_table') label_output = self.__builder.get_object('label_output_custom_key') list_labels = [] if mode == 'romaji': dlg.set_title(_("Customize Romaji Key Table")) label.set_label(_("_Romaji Key Table:")) label_output.set_label(_("_Output Chars")) list_labels = [['default', _("Default")]] self.__show_dialog_custom_key_table_extention(mode) elif mode == 'kana': dlg.set_title(_("Customize Kana Key Table")) label.set_label(_("_Kana Key Table:")) label_output.set_label(_("_Output Chars")) list_labels = [['jp', _("Japanese Keyboard Layout")], ['us', _("U.S. Keyboard Layout")]] self.__show_dialog_custom_key_table_extention(mode) elif mode == 'thumb': dlg.set_title(_("Customize Thumb Shift Key Table")) label.set_label(_("_Thumb Shift Key Table:")) label_output.set_label(_("Single _Output Chars")) list_labels = [['base', _("Base")], ['nicola-j-table', _("NICOLA-J key extension")], ['nicola-a-table', _("NICOLA-A key extension")], ['nicola-f-table', _("NICOLA-F key extension")], ['kb231-j-fmv-table', _("FMV KB231-J key extension")], ['kb231-a-fmv-table', _("FMV KB231-A key extension")], ['kb231-f-fmv-table', _("FMV KB231-F key extension")], ['kb611-j-fmv-table', _("FMV KB611-J key extension")], ['kb611-a-fmv-table', _("FMV KB611-A key extension")], ['kb611-f-fmv-table', _("FMV KB611-F key extension")], ] self.__show_dialog_custom_key_table_extention(mode) ls = Gtk.ListStore(str, str) for s in list_labels: ls.append([s[1], s[0]]) renderer = Gtk.CellRendererText() combobox = self.__builder.get_object('combobox_custom_key_table') combobox.pack_start(renderer, True) combobox.add_attribute(renderer, 'text', 0) combobox.set_model(ls) tv = None if mode == 'romaji': method = prefs.get_value('romaji-typing-rule', 'method') if method == None: method = 'default' tv = self.__get_romaji_treeview_custom_key_table(method) if mode == 'kana': method = prefs.get_value('kana-typing-rule', 'method') if method == None: method = 'jp' tv = self.__get_kana_treeview_custom_key_table(method) if mode == 'thumb': method = prefs.get_value('thumb-typing-rule', 'method') if method == None: method = 'base' tv = self.__get_thumb_treeview_custom_key_table(method) self.__connect_dialog_custom_key_table_buttons(mode) id = 0 # thumb uses all tables so the default is always 0. if mode != 'thumb': id = -1 for index, labels in enumerate(list_labels): if labels[0] == method: id = index break if id == -1: ls.append([method, method]) combobox.set_model(ls) id = len(list_labels) combobox.set_active(id) combobox.connect('changed', self.on_cb_custom_key_table_changed, mode) id = dlg.run() dlg.hide() self.__disconnect_dialog_custom_key_table_buttons() def __set_thumb_kb_label(self): if self.__thumb_kb_layout_mode == None or \ self.__thumb_kb_layout == None: return section, key = self.__get_section_key( Gtk.Buildable.get_name(self.__thumb_kb_layout_mode)) layout_mode = self.__prefs.get_value(section, key) if layout_mode: self.__thumb_kb_layout.set_sensitive(False) else: self.__thumb_kb_layout.set_sensitive(True) def __get_dict_cli_from_list(self, cli_list): cli_str = cli_list[0] if len(cli_list) <= 2: return cli_str cli_str = cli_str + ' ' + ' '.join(cli_list[2:]) return cli_str def __get_quoted_id(self, file): id = file has_mbcs = False for i in xrange(0, len(id)): if ord(id[i]) >= 0x7f: has_mbcs = True break if has_mbcs: id = id.encode('hex') if id.find('/') >=0: id = id[id.rindex('/') + 1:] if id.find('.') >=0: id = id[:id.rindex('.')] if id.startswith('0x'): id = id.encode('hex') has_mbcs = True if has_mbcs: id = '0x' + id return id def __get_dict_file_from_id(self, selected_id): files = self.__prefs.get_value('dict', 'files') return files.get(selected_id, None) def __is_system_dict_file_from_id(self, selected_id): prefs = self.__prefs dict_item = prefs.get_value('dict', 'list')[selected_id] return dict_item.is_system def __append_dict_id_in_model(self, id): prefs = self.__prefs section = 'dict/file/' + id dicts = prefs.get_value('dict', 'list') dict_item = dicts[id] short_label = dict_item.short_label long_label = dict_item.long_label embed = dict_item.embed single = dict_item.single reverse = dict_item.reverse if dict_item.is_system: long_label = _(long_label) l = self.__builder.get_object('dict:view').get_model() l.append([id, short_label, long_label, embed, single, reverse]) def __append_dicts_in_model(self): prefs = self.__prefs order = prefs.get_value('dict', 'order') dict_files = prefs.get_value('dict', 'files') if len(order) == 0: order = list(dict_files.keys()) for id in order: if id == 'embedded': continue files = dict_files[id] for file in files: if not path.exists(file): continue self.__append_dict_id_in_model(id) def __append_user_dict_from_dialog(self, file, id, new): files_dict = self.__prefs.get_value('dict', 'files') if new: files = [] for v in files_dict.values(): for f in v: files.append(f) if file in files: self.__run_message_dialog(_("Your choosed file has already been added: ") + file, Gtk.MessageType.ERROR) return if not path.exists(file): self.__run_message_dialog(_("The file you have chosen does not exist: ") + file, Gtk.MessageType.ERROR) return if path.isdir(file): self.__run_message_dialog(_("Your choosed file is a directory: " + file), Gtk.MessageType.ERROR) return if file.startswith(self.__get_userhome() + '/.anthy'): self.__run_message_dialog(_("You cannot add dictionaries in the anthy private directory: " + file), Gtk.MessageType.ERROR) return else: file = files_dict[id][0] if new: id = self.__get_quoted_id(file) if id == None or id == '': self.__run_message_dialog(_("Your file path is not good: ") + file, Gtk.MessageType.ERROR) return single = self.__builder.get_object('dict:single').get_active() embed = self.__builder.get_object('dict:embed').get_active() reverse = self.__builder.get_object('dict:reverse').get_active() short_label = self.__builder.get_object('dict:short_entry').get_text() if len(unicode(short_label, 'utf-8')) > 1: short_label = unicode(short_label, 'utf-8')[0].encode('utf-8') long_label = self.__builder.get_object('dict:long_entry').get_text() if new: order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) order.append(id) self.__prefs.set_value('dict', 'order', order) self.__prefs.set_list_item('dict', 'files', id, [file]) filename = file if filename.find('/') >=0: filename = filename[filename.rindex('/') + 1:] if filename.find('.') >=0: filname = filename[:filename.rindex('.')] if short_label == None or short_label == '': short_label = filename[0] if long_label == None or long_label == '': long_label = filename self.__update_dict_values(new, id, short_label, long_label, embed, single, reverse) files = [] def __init_dict_chooser_dialog(self): self.__builder.get_object('dict:single').set_active(True) self.__builder.get_object('dict:embed').set_active(False) self.__builder.get_object('dict:reverse').set_active(False) short_entry = self.__builder.get_object('dict:short_entry') short_entry.set_text('') short_entry.set_editable(True) long_entry = self.__builder.get_object('dict:long_entry') long_entry.set_text('') long_entry.set_editable(True) def __get_selected_dict_id(self): l, it = self.__builder.get_object('dict:view').get_selection().get_selected() if not it: return None return l.get_value(it, 0) def __set_selected_dict_to_dialog(self): selected_id = self.__get_selected_dict_id() if selected_id == None: return None dict_item = self.__prefs.get_value('dict', 'list')[selected_id] short_label = dict_item.short_label long_label = dict_item.long_label embed = dict_item.embed single = dict_item.single reverse = dict_item.reverse is_system_dict = dict_item.is_system if len(self.__prefs.unicode(short_label)) > 1: short_label = self.__prefs.unicode(short_label)[0].encode('utf-8') self.__builder.get_object('dict:single').set_active(single) self.__builder.get_object('dict:embed').set_active(embed) self.__builder.get_object('dict:reverse').set_active(reverse) short_entry = self.__builder.get_object('dict:short_entry') short_entry.set_text(short_label) long_entry = self.__builder.get_object('dict:long_entry') if is_system_dict: short_entry.set_editable(False) long_entry.set_text(_(long_label)) long_entry.set_editable(False) else: short_entry.set_editable(True) long_entry.set_text(long_label) long_entry.set_editable(True) return selected_id def __update_dict_values(self, new, id, short_label, long_label, embed, single, reverse): prefs = self.__prefs if new: dict_item = prefs.get_value('dict', 'template') dict_item.id = id dict_item.short_label = short_label dict_item.long_label = long_label dict_item.embed = embed dict_item.single = single dict_item.reverse = reverse l = self.__builder.get_object('dict:view').get_model() l.append([id, short_label, long_label, embed, single, reverse]) else: dict_item = prefs.get_value('dict', 'list')[id] if not dict_item.is_system: dict_item.short_label = short_label dict_item.long_label = long_label dict_item.embed = embed dict_item.single = single dict_item.reverse = reverse l, i = self.__builder.get_object('dict:view').get_selection().get_selected() if i : l[i] = [id, short_label, long_label, embed, single, reverse] prefs.set_list_item('dict', 'list', id, dict_item) def __text_cell_data_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('dict:view').get_model() text = l.get_value(iter, id) renderer.set_property('text', text) def __toggle_cell_data_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('dict:view').get_model() active = l.get_value(iter, id) renderer.set_property('active', active) def __resync_engine_file(self): user_config = path.join(self.__get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml') if not path.exists(user_config): return if not path.exists(system_config): os.unlink(user_config) return # path.getmtime depends on the build time rather than install time. def __get_engine_file_version(engine_file): version_str = '' dom = xml.dom.minidom.parse(engine_file) elements = dom.getElementsByTagName('version') nodes = [] if len(elements) > 0: nodes = elements[0].childNodes if len(nodes) > 0: version_str = nodes[0].data if type(version_str) == unicode: version_str = str(version_str) if version_str != '': version_str = version_str.strip() return version_str user_config_version = __get_engine_file_version(user_config) system_config_version = __get_engine_file_version(system_config) if system_config_version > user_config_version: import shutil shutil.copyfile(system_config, user_config) def __get_engine_file(self): user_config = path.join(self.__get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml') engine_file = None for f in [user_config, system_config]: if path.exists(f): engine_file = f break if engine_file == None: self.__run_message_dialog(_("The engine xml file does not exist: ") + system_config, Gtk.MessageType.ERROR) return None return engine_file def __get_keymap(self): keymap = '' layout = '' variant = '' option = '' engine_file = self.__get_engine_file() if engine_file == None: return None dom = xml.dom.minidom.parse(engine_file) nodes = dom.getElementsByTagName('layout')[0].childNodes if len(nodes) > 0: layout = nodes[0].data if type(layout) == unicode: layout = str(layout) if layout != '': keymap = layout.strip() nodes = dom.getElementsByTagName('layout_variant')[0].childNodes if len(nodes) > 0: variant = nodes[0].data if type(variant) == unicode: variat = str(variant) if variant != '': keymap += '(' + varaint.strip() + ')' nodes = dom.getElementsByTagName('layout_option')[0].childNodes if len(nodes) > 0: option = nodes[0].data if type(option) == unicode: option = str(option) if option != '': keymap += '[' + option.strip() + ']' return keymap def __parse_keymap(self, keymap): layout = None variant = None option = None length = keymap.find('(') if length >= 0: if layout == None: layout = keymap[0:length] keymap = keymap[length + 1:] length = keymap.find(')') if length > 0: variant = keymap[0:length] keymap = keymap[length + 1:] else: print >> sys.stderr, 'Invalid keymap', keymap return ('', '', '') length = keymap.find('[') if length >= 0: if layout == None: layout = keymap[0:length] keymap = keymap[length + 1:] length = keymap.find(']') if length > 0: option = keymap[0:length] keymap = keymap[length + 1:] else: print >> sys.stderr, 'Invalid keymap', keymap return ('', '', '') if layout == None: layout = keymap if layout == None: layout = '' if variant == None: variant = '' if option == None: option = '' return (layout, variant, option) def __save_keymap(self): engine_file = self.__get_engine_file() if engine_file == None: return None (layout, variant, option) = self.__parse_keymap(self.__keymap) dom = xml.dom.minidom.parse(engine_file) nodes = dom.getElementsByTagName('layout')[0].childNodes if len(nodes) == 0: nodes.append(dom.createTextNode(layout)) else: nodes[0].data = layout nodes = dom.getElementsByTagName('layout_variant')[0].childNodes if len(nodes) == 0: nodes.append(dom.createTextNode(variant)) else: nodes[0].data = variant nodes = dom.getElementsByTagName('layout_option')[0].childNodes if len(nodes) == 0: nodes.append(dom.createTextNode(option)) else: nodes[0].data = option nodes = dom.getElementsByTagName('symbol')[0].childNodes # unicode will causes UnicodeEncodeError in write stream. if len(nodes) > 0 and type(nodes[0].data) == unicode: nodes[0].data = nodes[0].data.encode('utf-8') user_config = path.join(self.__get_userhome(), '.config', 'ibus-anthy', 'engines.xml') dir = path.dirname(user_config) if not path.exists(dir): os.makedirs(dir, 0700) f = open(user_config, 'w') dom.writexml(f, '', '', '', 'utf-8') f.close() os.chmod(user_config, 0600) self.__keymap = None self.__run_message_dialog(_("Anthy keyboard layout is changed. " "Please restart ibus to reload the layout.")) def __update_keymap_label(self): self.__resync_engine_file() prefs = self.__prefs keymap = self.__get_keymap() if keymap == None: return if keymap == '': keymap = 'default' keymap_list = prefs.get_value('common', 'keyboard-layouts') if keymap != None and not keymap in keymap_list: keymap_list.append(keymap) index = -1 if keymap != None: index = keymap_list.index(keymap) model = Gtk.ListStore(str) for k in keymap_list: if k == 'default': k = _("Default") model.append([k]) combobox = self.__builder.get_object('keymap:combobox_custom_table') combobox.set_model(model) combobox.set_active(0) if index >= 0: combobox.set_active(index) combobox.connect_after('changed', self.on_cb_keymap_changed, 0) def __search_and_mark(self, buffer, text, start, end, onetime, forward): if forward: match = start.forward_search(text, 0, end) else: match = start.backward_search(text, 0, end) if match == None: return False match_start, match_end = match if onetime: buffer.place_cursor(match_start) buffer.select_range(match_start, match_end) return True buffer.apply_tag(buffer.tag_found, match_start, match_end) self.__search_and_mark(buffer, text, match_end, end, onetime, forward) return True def __filter_search(self, entry, onetime, forward): text = entry.get_text() self.__filter_timeout_id = 0 text_view = entry.text_view buffer = text_view.get_buffer() start = buffer.get_start_iter() if onetime: bounds = buffer.get_selection_bounds() if len(bounds) != 0: start, end = bounds if forward: start = end end = buffer.get_end_iter() if not forward: end = buffer.get_start_iter() if not onetime: buffer.remove_all_tags(start, end) if text == '': return found = self.__search_and_mark(buffer, text, start, end, onetime, forward) if not found and onetime and forward: end = start start = buffer.get_start_iter() self.__search_and_mark(buffer, text, start, end, onetime, forward) def __do_filter(self, entry): self.__filter_search(entry, False, True) return False def __filter_changed(self, entry): if self.__filter_timeout_id != 0: return self.__filter_timeout_id = GLib.timeout_add(150, self.__do_filter, entry) def __filter_key_release_event(self, entry, event): pressed, keyval = event.get_keyval() if keyval == IBus.KEY_Return: forward = True if event.get_state() & Gdk.ModifierType.SHIFT_MASK: forward = False self.__filter_search(entry, True, forward) text_view = entry.text_view buffer = text_view.get_buffer() text_view.scroll_to_mark(buffer.get_insert(), 0.25, False, 0.0, 0.0) return False def on_selection_changed(self, widget, id): set_sensitive = lambda a, b: self.__builder.get_object(a).set_sensitive(b) flg = True if widget.get_selected()[1] else False for name in [['btn_default', 'btn_edit'], ['es:button_refresh', 'es:button_del']][id]: set_sensitive(name, flg) def on_selection_custom_key_table_changed(self, widget, id): l, i = widget.get_selected() # if 'combobox_custom_key_table' is changed, # 'treeview_custom_key_table' also receives this signal # but no selection. if i == None: return button = self.__builder.get_object('button_remove_custom_key') button.set_sensitive(True) def on_main_quit(self, widget, event): Gtk.main_quit() return True def on_btn_close_clicked(self, widget): Gtk.main_quit() def on_cb_keymap_changed(self, widget, id): it = widget.get_active() model = widget.get_model() keymap = model[it][0] if keymap == _("Default"): keymap = 'default' if self.__keymap == keymap: return self.__keymap = keymap self.__save_keymap() self.__keymap = None def on_cb_custom_key_table_changed(self, widget, user_data): prefs = self.__prefs tv = self.__builder.get_object('treeview_custom_key_table') mode = user_data id = widget.get_active() model = widget.get_model() method = model[id][1] if tv != None: for column in tv.get_columns(): tv.remove_column(column) for child in tv.get_children(): tv.remove(child) if mode == 'romaji': tv = self.__get_romaji_treeview_custom_key_table(method) elif mode == 'kana': prefs.set_value('kana-typing-rule', 'method', method) tv = self.__get_kana_treeview_custom_key_table(method) elif mode == 'thumb': # thumb uses all tables so do not save the method. tv = self.__get_thumb_treeview_custom_key_table(method) def on_btn_edit_clicked(self, widget): ls, it = self.__builder.get_object('shortcut').get_selection().get_selected() m = self.__builder.get_object('es:treeview').get_model() m.clear() for s in s_to_l(ls.get(it, 1)[0]): m.append([s]) self.__builder.get_object('es:entry').set_text('') for w in ['es:checkbutton_ctrl', 'es:checkbutton_alt', 'es:checkbutton_shift']: self.__builder.get_object(w).set_active(False) dlg = self.__builder.get_object('edit_shortcut') dlg.set_transient_for(widget.get_toplevel()) id = dlg.run() dlg.hide() if id == Gtk.ResponseType.OK: new = l_to_s([m[i][0] for i in range(len(m))]) if new != ls.get(it, 1)[0]: group = self.__get_shortcut_group() self.__prefs.set_list_item('shortcut', group, ls.get(it, 0)[0], s_to_l(new)) ls.set(it, 1, new) def on_btn_default_clicked(self, widget): ls, it = self.__builder.get_object('shortcut').get_selection().get_selected() group = self.__get_shortcut_group() shortcuts = self.__prefs.get_default_value('shortcut', group) new = l_to_s(shortcuts[ls.get(it, 0)[0]]) if new != ls.get(it, 1)[0]: self.__prefs.set_list_item('shortcut', group, ls.get(it, 0)[0], s_to_l(new)) ls.set(it, 1, new) def on_btn_romaji_custom_table_clicked(self, widget): self.__run_dialog_custom_key_table(widget, 'romaji') def on_btn_kana_custom_table_clicked(self, widget): self.__run_dialog_custom_key_table(widget, 'kana') def on_btn_thumb_custom_table_clicked(self, widget): self.__run_dialog_custom_key_table(widget, 'thumb') def on_btn_add_custom_key(self, widget, user_data): prefs = self.__prefs input = self.__builder.get_object('entry_input_custom_key') output = self.__builder.get_object('entry_output_custom_key') left = self.__builder.get_object('entry_left_thumb_shift_custom_key') right = self.__builder.get_object('entry_right_thumb_shift_custom_key') model = self.__builder.get_object('treeview_custom_key_table').get_model() combobox = self.__builder.get_object('combobox_custom_key_table') id = combobox.get_active() model_combobox = combobox.get_model() method = model_combobox[id][1] type = user_data section = None key = input.get_text() value = output.get_text() left_text = left.get_text() right_text = right.get_text() if key == None: self.__run_message_dialog(_("Please specify Input Chars")) return elif value == None: self.__run_message_dialog(_("Please specify Output Chars")) return elif type == 'thumb' and left_text == None: self.__run_message_dialog(_("Please specify Left Thumb Shift Chars")) return elif type == 'thumb' and right_text == None: self.__run_message_dialog(_("Please specify Right Thumb Shift Chars")) return if type == 'romaji': section = 'romaji-typing-rule' model.append([type, key, value]) elif type == 'kana': section = 'kana-typing-rule' model.append([type, key, value]) elif type == 'thumb': section = 'thumb-typing-rule' model.append([type, key, value, left_text, right_text]) if section == None: self.__run_message_dialog(_("Your custom key is not assigned in any sections. Maybe a bug.")) return gkey = prefs.typing_to_config_key(key) if gkey == '': return key = gkey if type != 'thumb': prefs.set_list_item(section, 'list', (method, key), value) else: prefs.set_list_item(section, 'list', (method, key), [value, right_text, left_text]) left.set_text('') right.set_text('') input.set_text('') output.set_text('') def on_btn_remove_custom_key(self, widget, user_data): prefs = self.__prefs combobox = self.__builder.get_object('combobox_custom_key_table') id = combobox.get_active() model_combobox = combobox.get_model() method = model_combobox[id][1] tv = user_data l, i = tv.get_selection().get_selected() type = l[i][0] key = l[i][1] section = None if type == 'romaji': section = 'romaji-typing-rule' elif type == 'kana': section = 'kana-typing-rule' elif type == 'thumb': section = 'thumb-typing-rule' if section == None: self.__run_message_dialog(_("Your custom key is not assigned in any sections. Maybe a bug.")) return gkey = prefs.typing_to_config_key(key) if gkey == '': return key = gkey prefs.delete_list_item(section, 'list', (method, key)) l.remove(i) widget.set_sensitive(False) def on_btn_thumb_key_clicked(self, widget): if Gtk.Buildable.get_name(widget) == 'thumb:button_ls': entry = 'thumb:ls' elif Gtk.Buildable.get_name(widget) == 'thumb:button_rs': entry = 'thumb:rs' else: return text = self.__builder.get_object(entry).get_text() tv = self.__builder.get_object('es:treeview') m = tv.get_model() m.clear() if text != None: m.append([text]) i = m.get_iter_first() tv.get_selection().select_iter(i) self.__builder.get_object('es:entry').set_text('') self.__builder.get_object('es:button_add').hide() self.__builder.get_object('es:button_refresh').show() self.__builder.get_object('es:button_del').hide() for w in ['es:checkbutton_ctrl', 'es:checkbutton_alt', 'es:checkbutton_shift']: self.__builder.get_object(w).set_active(False) dlg = self.__builder.get_object('edit_shortcut') dlg.set_transient_for(widget.get_toplevel()) id = dlg.run() dlg.hide() self.__builder.get_object('es:button_add').show() self.__builder.get_object('es:button_refresh').hide() self.__builder.get_object('es:button_del').show() if id == Gtk.ResponseType.OK: l, i = tv.get_selection().get_selected() new = l[i][0] if new != text: section, key = self.__get_section_key(entry) self.__prefs.set_value(section, key, new) self.__builder.get_object(entry).set_text(new) def on_btn_dict_command_clicked(self, widget): if Gtk.Buildable.get_name(widget) == 'dict:btn_edit_dict_command': key = 'dict-admin-command' elif Gtk.Buildable.get_name(widget) == 'dict:btn_add_word_command': key = 'add-word-command' else: return command = self.__prefs.get_value('common', key) if not path.exists(command[0]): self.__run_message_dialog(_("Your file does not exist: ") + command[0], Gtk.MessageType.ERROR) return os.spawnl(os.P_NOWAIT, *command) def on_btn_dict_add_clicked(self, widget): file = None id = None dlg = None if Gtk.Buildable.get_name(widget) == 'dict:btn_add': dlg = Gtk.FileChooserDialog(title=_("Open Dictionary File"), transient_for=widget.get_toplevel(), action=Gtk.FileChooserAction.OPEN) buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL, _("_Open"), Gtk.ResponseType.OK) dlg.add_buttons(*buttons) if Gtk.Buildable.get_name(widget) == 'dict:btn_edit': dlg = Gtk.Dialog(title=_("Edit Dictionary File"), transient_for=widget.get_toplevel()) buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL, _("_OK"), Gtk.ResponseType.OK) dlg.add_buttons(*buttons) assert(dlg != None), 'Button name is undefined.' vbox = self.__builder.get_object('dict:add_extra_vbox') if Gtk.Buildable.get_name(widget) == 'dict:btn_add': # Need to init for the second time self.__init_dict_chooser_dialog() dlg.set_extra_widget(vbox) if Gtk.Buildable.get_name(widget) == 'dict:btn_edit': id = self.__set_selected_dict_to_dialog() if id == None: self.__run_message_dialog(_("Your choosed file is not correct."), Gtk.MessageType.ERROR) return parent_vbox = dlg.vbox parent_vbox.add(vbox) vbox.show_all() if dlg.run() == Gtk.ResponseType.OK: if Gtk.Buildable.get_name(widget) == 'dict:btn_add': file = dlg.get_filename() if file[0] != '/': dir = dlg.get_current_folder() file = dir + '/' + file self.__append_user_dict_from_dialog(file, None, True) elif Gtk.Buildable.get_name(widget) == 'dict:btn_edit': self.__append_user_dict_from_dialog(None, id, False) dlg.hide() vbox.unparent() def on_btn_dict_delete_clicked(self, widget): l, i = self.__builder.get_object('dict:view').get_selection().get_selected() if not i: return selected_id = l.get_value(i, 0) if selected_id == None: return dict_item = self.__prefs.get_value('dict', 'list')[selected_id] if dict_item.is_system: self.__run_message_dialog(_("You cannot delete the system dictionary."), Gtk.MessageType.ERROR) return file = self.__get_dict_file_from_id(selected_id) if file != None: order = self.__prefs.get_value('dict', 'order') order.remove(selected_id) order = self.__prefs.set_value('dict', 'order', order) self.__prefs.delete_list_item('dict', 'files', selected_id) self.__prefs.delete_list_item('dict', 'list', selected_id) l.remove(i) return l.remove(i) def on_btn_dict_view_clicked(self, widget): dict_file = None selected_id = self.__get_selected_dict_id() if selected_id == None: return dict_file = self.__get_dict_file_from_id(selected_id) if dict_file == None: self.__run_message_dialog(_("Your file is not good."), Gtk.MessageType.ERROR) return if not path.exists(dict_file[0]): self.__run_message_dialog(_("Your file does not exist: ") + dict_file[0], Gtk.MessageType.ERROR) return # The selected id is already quoted. dicts = self.__prefs.get_value('dict', 'list') dict_item = dicts[selected_id] nline = dict_item.preview_lines encoding = dict_item.encoding lines = ''; for i, line in enumerate(file(dict_file[0])): if nline >= 0 and i >= nline: break; lines = lines + line if encoding != None and encoding != 'utf-8': lines = unicode(lines, encoding).encode('utf-8') dlg = Gtk.Dialog(title=_("View Dictionary File"), transient_for=widget.get_toplevel()) buttons=(_("_OK"), Gtk.ResponseType.OK) dlg.add_buttons(*buttons) buffer = Gtk.TextBuffer() buffer.set_text (lines) buffer.tag_found = buffer.create_tag('found', background = 'yellow') text_view = Gtk.TextView.new_with_buffer(buffer) text_view.set_editable(False) sw = Gtk.ScrolledWindow() sw.add(text_view) sw.set_min_content_height(400) parent_vbox = dlg.vbox parent_vbox.add(sw) sw.show_all() dlg.set_default_size(500, 500) self.__filter_timeout_id = 0 if hasattr(Gtk, 'SearchEntry') and \ hasattr(Gtk, 'SearchEntryClass') and \ hasattr(Gtk.SearchEntryClass, 'search_changed'): filter_entry = Gtk.SearchEntry(hexpand = True, margin_left = 6, margin_right = 6, margin_top = 6, margin_bottom = 6) filter_entry.text_view = text_view filter_entry.connect('search-changed', self.__filter_changed) filter_entry.connect('key-release-event', self.__filter_key_release_event) parent_vbox.add(filter_entry) filter_entry.show_all() sw.show_all() dlg.run() dlg.destroy() def on_btn_dict_order_clicked(self, widget): l, it = self.__builder.get_object('dict:view').get_selection().get_selected() if not it: return selected_path = l.get_path(it) selected_id = l.get_value(it, 0) index = selected_path.get_indices()[0] if Gtk.Buildable.get_name(widget) == 'dict:btn_up': if index <= 0: return next_path = (index - 1, ) elif Gtk.Buildable.get_name(widget) == 'dict:btn_down': if index + 1 >= len(l): return next_path = (index + 1, ) next_it = l.get_iter(next_path) if next_it: l.swap(it, next_it) order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) i = order.index(selected_id) if Gtk.Buildable.get_name(widget) == 'dict:btn_up': if i <= 0: return next_i = i - 1 elif Gtk.Buildable.get_name(widget) == 'dict:btn_down': if i + 1 >= len(order): return next_i = i + 1 f = order[i] order[i] = order[next_i] order[next_i] = f self.__prefs.set_value('dict', 'order', order) def on_shortcut_type_changed(self, widget): ls = self.__builder.get_object('shortcut').get_model() ls.clear() group = self.__get_shortcut_group() shortcuts = self.__prefs.get_value('shortcut', group) for k in shortcuts.keys(): ls.append([k, l_to_s(shortcuts[k])]) section, key = self.__get_section_key(Gtk.Buildable.get_name(widget)) self.__prefs.set_value(section, key, group) def on_shortcut_key_release_event(self, widget, event): if event.hardware_keycode in [36, 65]: self.on_btn_edit_clicked(widget) def on_shortcut_click_event(self, widget, event): if event.type == Gdk.EventType._2BUTTON_PRESS: widget.dc = True elif event.type == Gdk.EventType.BUTTON_RELEASE: if hasattr(widget, 'dc') and widget.dc: self.on_btn_edit_clicked(widget) widget.dc = False def on_key_input_dialog_key_press_event(self, widget, event): widget.e = (event.keyval, event.get_state()) return True def on_key_input_dialog_key_release_event(self, widget, event): widget.response(Gtk.ResponseType.OK) return True def on_entry_custom_key_changed(self, widget, user_data): mode = user_data input = self.__builder.get_object('entry_input_custom_key') output = self.__builder.get_object('entry_output_custom_key') left = self.__builder.get_object('entry_left_thumb_shift_custom_key') right = self.__builder.get_object('entry_right_thumb_shift_custom_key') button = self.__builder.get_object('button_add_custom_key') if mode != 'thumb': if input.get_text() != '' and output.get_text() != '': button.set_sensitive(True) else: button.set_sensitive(False) else: if input.get_text() != '' and output.get_text() != '' and \ left.get_text() != '' and right.get_text() != '': button.set_sensitive(True) else: button.set_sensitive(False) def on_entry_dict_command_changed(self, widget): if not widget.get_text(): return list = widget.get_text().split() if len(list) == 0: return elif list[0][0] == '/': if len(list) == 1: list.append(list[0][list[0].rfind('/') + 1:]) else: list.insert(1, list[0][list[0].rfind('/') + 1:]) else: if len(list) == 1: list[0] = '/usr/bin/' + list[0] else: list.insert(0, '/usr/bin/' + list[0]) list[1] = list[1][list[1].rfind('/') + 1:] if Gtk.Buildable.get_name(widget) == 'dict:entry-edit-dict-command': key = 'dict-admin-command' elif Gtk.Buildable.get_name(widget) == 'dict:entry-add-word-command': key = 'add-word-command' else: return self.__prefs.set_value('common', key, list) def on_es_entry_changed(self, widget): if not widget.get_text(): self.__builder.get_object('es:button_add').set_sensitive(False) else: self.__builder.get_object('es:button_add').set_sensitive(True) def on_es_button_run_input_clicked(self, widget): dlg = self.__builder.get_object('key_input_dialog') dlg.set_transient_for(widget.get_toplevel()) dlg.set_markup('%s' % _("Please press a key (or a key combination)")) dlg.format_secondary_text(_("The dialog will be closed when the key is released")) id = dlg.run() dlg.hide() if id == Gtk.ResponseType.OK: key, state = dlg.e if (state & (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK) and ord('a') <= key <= ord('z')): key = ord(chr(key).upper()) self.__builder.get_object('es:entry').set_text(IBus.keyval_name(key)) for w, i in [('es:checkbutton_ctrl', IBus.ModifierType.CONTROL_MASK), ('es:checkbutton_alt', IBus.ModifierType.MOD1_MASK), ('es:checkbutton_shift', IBus.ModifierType.SHIFT_MASK)]: self.__builder.get_object(w).set_active(True if state & i else False) def on_es_button_add_clicked(self, widget): s = self.__builder.get_object('es:entry').get_text() if not s or not IBus.keyval_from_name(s): dlg = self.__builder.get_object('invalid_keysym') dlg.set_transient_for(widget.get_toplevel()) dlg.set_markup('%s' % _("Invalid keysym")) dlg.format_secondary_text(_("This keysym is not valid")) dlg.run() dlg.hide() return True for w, m in [('es:checkbutton_ctrl', 'Ctrl+'), ('es:checkbutton_alt', 'Alt+'), ('es:checkbutton_shift', 'Shift+')]: if self.__builder.get_object(w).get_active(): s = m + s l = self.__builder.get_object('es:treeview').get_model() for i in range(len(l)): if l[i][0] == s: return True l.append([s]) def on_es_button_refresh_clicked(self, widget): s = self.__builder.get_object('es:entry').get_text() if not s or not IBus.keyval_from_name(s): dlg = self.__builder.get_object('invalid_keysym') dlg.set_transient_for(widget.get_toplevel()) dlg.set_markup('%s' % _("Invalid keysym")) dlg.format_secondary_text(_("This keysym is not valid")) dlg.run() dlg.hide() return True for w, m in [('es:checkbutton_ctrl', 'Ctrl+'), ('es:checkbutton_alt', 'Alt+'), ('es:checkbutton_shift', 'Shift+')]: if self.__builder.get_object(w).get_active(): s = m + s tv = self.__builder.get_object('es:treeview') l, i = tv.get_selection().get_selected() l[i][0] = s return True def on_es_button_del_clicked(self, widget): tv = self.__builder.get_object('es:treeview') l, i = tv.get_selection().get_selected() if i: l.remove(i) def run(self): Gtk.main() if __name__ == '__main__': AnthySetup().run() ibus-anthy-1.5.17/setup/python2/prefs.py000066400000000000000000000320001475510605700201310ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys from gi import require_version as gi_require_version gi_require_version('Gio', '2.0') gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') from gi.repository import Gio from gi.repository import GLib from gi.repository import GObject from gi.repository import IBus class DictItem(): def __init__(self, id='', short_label='', long_label='', icon='', is_system=False, preview_lines=-1, embed=False, single=True, reverse=False, encoding='utf-8'): self.id = id self.short_label = short_label self.long_label = long_label self.icon = icon self.is_system = is_system self.preview_lines = preview_lines self.embed = embed self.single = single self.reverse = reverse self.encoding = encoding def __str__(self): retval = ('id:', self.id, 'short-label:', self.short_label, 'long-label:', self.long_label, 'icon:', self.icon, 'is-system:', self.is_system, 'preview-lines:', self.preview_lines, 'embed:', self.embed, 'single:', self.single, 'reverse:', self.reverse, 'encoding:', self.encoding) return str(retval) @classmethod def serialize(cls, dict_item): builder = GLib.VariantBuilder(GLib.VariantType('r')) builder.add_value(GLib.Variant.new_string(dict_item.id)) builder.add_value(GLib.Variant.new_string(dict_item.short_label)) builder.add_value(GLib.Variant.new_string(dict_item.long_label)) builder.add_value(GLib.Variant.new_string(dict_item.icon)) builder.add_value(GLib.Variant.new_boolean(dict_item.is_system)) builder.add_value(GLib.Variant.new_int32(dict_item.preview_lines)) builder.add_value(GLib.Variant.new_boolean(dict_item.embed)) builder.add_value(GLib.Variant.new_boolean(dict_item.single)) builder.add_value(GLib.Variant.new_boolean(dict_item.reverse)) builder.add_value(GLib.Variant.new_string(dict_item.encoding)) return builder.end() class Prefs(GObject.GObject): __gsignals__ = { 'changed' : ( GObject.SignalFlags.RUN_FIRST, None, (str, str, GLib.Variant)), } def __init__(self): super(Prefs, self).__init__() self.__cache = {} self.__settings = {} self.__schema_prefix = 'org.freedesktop.ibus.engine.anthy.' self.__schema_sections = ['common', 'shortcut', 'romaji-typing-rule', 'kana-typing-rule', 'thumb-typing-rule', 'thumb', 'dict'] for section in self.__schema_sections: self.__settings[section] = Gio.Settings( schema=self.__schema_prefix + section) self.__settings[section].connect('changed', self.__settings_on_changed) def __settings_on_changed(self, settings, key): section = settings.props.schema[len(self.__schema_prefix):] variant_value = self.__settings[section].get_value(key) variant_key = self.__cache.get(section) if variant_key == None: variant_key = {} variant_key[key] = variant_value self.__cache[section] = variant_key self.emit('changed', section, key, variant_value) def variant_to_value(self, variant): if type(variant) != GLib.Variant: return variant type_string = variant.get_type_string() if type_string == 's': return variant.get_string() elif type_string == 'i': return variant.get_int32() elif type_string == 'b': return variant.get_boolean() elif type_string == 'v': return variant.unpack() elif len(type_string) > 0 and type_string[0] == 'a': # Use unpack() instead of dup_strv() in python. # In the latest pygobject3 3.3.4 or later, g_variant_dup_strv # returns the allocated strv but in the previous release, # it returned the tuple of (strv, length) return variant.unpack() else: self.printerr('Unknown variant type:', type_string) sys.abrt() return variant def variant_from_value(self, value): variant = None if type(value) == str: variant = GLib.Variant.new_string(value) elif type(value) == int: variant = GLib.Variant.new_int32(value) elif type(value) == bool: variant = GLib.Variant.new_boolean(value) elif type(value) == list: variant = GLib.Variant.new_strv(value) if variant == None: self.printerr('Unknown value type: %s' % type(value)) return variant def get_variant(self, section, key): variant_key = self.__cache.get(section) if variant_key != None: variant_value = variant_key.get(key) if variant_value != None: return variant_value variant_value = self.__settings[section].get_value(key) if variant_key == None: variant_key = {} variant_key[key] = variant_value self.__cache[section] = variant_key return variant_value def get_default_variant(self, section, key): return self.__settings[section].get_default_value(key) def get_readable_value(self, section, key, variant): value = self.variant_to_value(variant) if section == 'dict' and key == 'list': dicts = {} for item in value: dict_item = DictItem(*item) dicts[dict_item.id] = dict_item value = dicts if section == 'dict' and key == 'template': value = DictItem(*value) return value def get_value(self, section, key): variant = self.get_variant(section, key) return self.get_readable_value(section, key, variant) def get_default_value(self, section, key): variant = self.get_default_variant(section, key) return self.get_readable_value(section, key, variant) def set_variant(self, section, key, variant): self.__settings[section].set_value(key, variant) self.__settings[section].apply() def set_value(self, section, key, value): variant = self.variant_from_value(value) if variant == None: return self.set_variant(section, key, variant) def set_list_item(self, section, key, item, values): variant = self.get_variant(section, key) if variant == None: printerrr('%s:%s does not exist' % (section, key)) return if section == 'shortcut': variant_dict = GLib.VariantDict(variant) array = [] for value in values: array.append(GLib.Variant.new_string(value)) varray = GLib.Variant.new_array(GLib.VariantType('s'), array) variant_dict.insert_value(item, varray) # GVariantDict uses GHashTable internally and # GVariantDict.end() does not support the order. self.set_variant(section, key, variant_dict.end()) return if section == 'romaji-typing-rule' or \ section == 'kana-typing-rule' or \ section == 'thumb-typing-rule': (method, keymap_key) = item variant_dict = GLib.VariantDict(variant) keymap = variant_dict.lookup_value(method, None) keymap_dict = GLib.VariantDict(keymap) if section == 'thumb-typing-rule': array = [] for value in values: array.append(GLib.Variant.new_string(value)) vvalue = GLib.Variant.new_array(GLib.VariantType('s'), array) else: vvalue = GLib.Variant.new_string(values) keymap_dict.insert_value(keymap_key, vvalue) keymap = keymap_dict.end() variant_dict.insert_value(method, keymap) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'files': variant_dict = GLib.VariantDict(variant) array = [] for value in values: array.append(GLib.Variant.new_string(value)) varray = GLib.Variant.new_array(GLib.VariantType('s'), array) variant_dict.insert_value(item, varray) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'list': array = [] has_item = False for v in variant: dict_item = DictItem(*v) if dict_item.id == values.id: array.append(GLib.Variant.new_variant( DictItem.serialize(values))) has_item = True else: array.append(GLib.Variant.new_variant( DictItem.serialize(dict_item))) if not has_item: array.append(GLib.Variant.new_variant(DictItem.serialize(values))) varray = GLib.Variant.new_array(GLib.VariantType('v'), array) self.set_variant(section, key, varray) return def delete_list_item(self, section, key, item): variant = self.get_variant(section, key) if variant == None: printerrr('%s:%s does not exist' % (section, key)) return if section == 'romaji-typing-rule' or \ section == 'kana-typing-rule' or \ section == 'thumb-typing-rule': (method, keymap_key) = item variant_dict = GLib.VariantDict(variant) keymap = variant_dict.lookup_value(method, None) keymap_dict = GLib.VariantDict(keymap) keymap_dict.remove(keymap_key) keymap = keymap_dict.end() variant_dict.insert_value(method, keymap) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'files': variant_dict = GLib.VariantDict(variant) variant_dict.remove(item) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'list': array = [] for v in variant: dict_item = DictItem(*v) if dict_item.id == item: continue else: array.append(GLib.Variant.new_variant( DictItem.serialize(dict_item))) varray = GLib.Variant.new_array(GLib.VariantType('v'), array) self.set_variant(section, key, varray) return def bind(self, section, key, object, property, flags): self.__settings[section].bind(key, object, property, flags) # Convert DBus.String to str # sys.getdefaultencoding() == 'utf-8' with pygtk2 but # sys.getdefaultencoding() == 'ascii' with gi gtk3 # so the simple str(unicode_string) causes an error and need to use # unicode_string.encode('utf-8') instead. def str(self, uni): if uni == None: return None if type(uni) == str: return uni if type(uni) == unicode: return uni.encode('utf-8') return str(uni) # The simple unicode(string) causes an error and need to use # unicode(string, 'utf-8') instead. def unicode(self, string): if string == None: return None if type(string) == unicode: return string return unicode(string, 'utf-8') # If the parent process exited, the std io/out/error will be lost. @staticmethod def printerr(sentence): try: print >> sys.stderr, sentence except IOError: pass ibus-anthy-1.5.17/setup/python2/setup.ui000066400000000000000000004243441475510605700201570ustar00rootroot00000000000000 10 1 0 1 0 10 Hiragana Katakana Halfwidth Katakana Latin Wide Latin NICOLA-J NICOLA-A NICOLA-F None FMV KB231 key extension FMV KB611 key extension Romaji Kana Thumb shift Multiple segment Single segment Immediate conversion (multiple segment) Immediate conversion (single segment) Keep numpad codes Convert characters 「」/ 「」・ []/ []・ 、。 ,. Do nothing Automatically convert Automatically commit Clear Commit Hold Default ATOK Wnn False Setup - IBus-Anthy dialog True vertical True True 6 True vertical 8 True 0 none True 3 2 8 4 8 8 12 True 0 _Input Mode: True input-mode GTK_FILL True model1 0 1 2 True 0 _Typing Method: True typing-method 1 2 GTK_FILL True model2 0 1 2 1 2 True 0 Conversion _Mode: True conversion-segment-mode 2 3 GTK_FILL True model3 0 1 2 2 3 True <b>Initial Setting</b> True False False 0 True 0 none True vertical 4 4 8 8 12 True True 200 automatic automatic in True True 0 True <b>Menu Visibility on Status Icon</b> True False False 1 True General vbox1 False True vertical 8 True 0 none True 5 2 8 4 8 8 12 True 0 _Period Style: True period-style GTK_FILL True 0 Symbo_l Style: True symbol-style 1 2 GTK_FILL True 0 Numpad _Key Type: True ten-key-mode 2 3 GTK_FILL True model4 0 1 2 2 3 True model5 0 1 2 1 2 True model6 0 1 2 True 0 _Behavior on Period: True behavior-on-period 3 4 GTK_FILL True 0 Behavior on _Focus Out: True behavior-on-focus-out 4 5 GTK_FILL True model7 0 1 2 3 4 True model8 0 1 2 4 5 True <b>Behavior</b> True False False 0 True 0 none True 4 8 4 8 8 12 True horizontal 8 True 0 Candidate _Window Page Size: True page-size False False 0 True True adjustment1 0.97999999999999998 False False 1 Convert _symbols with the one column width True True False True True 1 2 Convert _numbers with the one column width True True False True True 2 3 Con_vert spaces with the one column width True True False True True 3 4 Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in preedit True True False True True 4 5 True <b>Other</b> True False False 1 True Conversion vbox2 1 False True vertical 4 4 True horizontal 8 True _Shortcut Type: True word-char shortcut-type False False 1 0 True model9 0 False False 1 False False 0 True True automatic automatic in 300 True True 1 True horizontal 4 end De_fault True True True True False False False 0 _Edit True True True True False False False 1 False False 2 True Key Binding vbox3 2 False True 8 4 vertical True 0 none True 4 4 vertical 8 12 True 2 2 8 4 True _Romaji Key Table: True romaji:button_custom_table GTK_FILL GTK_FILL ... True True True False True 1 2 GTK_FILL GTK_FILL False False 0 True <b>Romaji</b> True False True 0 True 0 none True 4 4 vertical 8 12 True 2 2 8 4 True _Kana Key Table: True kana:button_custom_table GTK_FILL GTK_FILL ... True True True False True 1 2 GTK_FILL GTK_FILL False False 0 True <b>Kana</b> True False True 1 True 0 none True 4 4 vertical 8 12 True 2 2 8 4 True Keyboad _layout: True keymap:combobox_custom_table GTK_FILL GTK_FILL True True 0 1 2 GTK_FILL GTK_FILL False False 0 True <b>Keyboard layout</b> True False True 2 True Typing Method vbox4 3 False True 8 4 vertical True 0 none True 4 4 vertical 8 8 12 True 2 3 8 4 True 0 True _Left Thumb Shift Key: thumb:ls GTK_FILL True True False GTK_FILL 1 2 ... True True False GTK_FILL GTK_FILL 2 3 True 0 True Right _Thumb Shift Key: thumb:rs GTK_FILL 1 2 True True False GTK_FILL 1 2 1 2 ... True True False GTK_FILL GTK_FILL 2 3 1 2 False True 0 Adjust _input method layout to system keyboard layout Adjust IM layout to XKB layout True True False True True False False 1 True horizontal 8 True 0 True Input _Method Layout: thumb:keyboard-layout False False 0 True model51 0 1 False False 2 True horizontal 8 True dialog-information False False 0 True 0 True Restart IBus when you change the keyboard layout Restart IBus when you change XKB False False 1 False False 3 True horizontal 8 True 0 True _Additional Key Arrangement: thumb:fmv-extension False False 0 True '~', '『', '¢', '£' and so on can be output with Thumb Shift key model11 0 1 False False 4 True horizontal 8 True dialog-information False False 0 True 0 True 74 You do not have to reconfigure the system keyboard layout for "Additional Key Arrangement" since this option changes input method layout only in case input method is turned on. You do not have to reconfigure XKB since this option changes IM layout only with IM on. False False 1 False False 5 _Enable semi-voiced sound mark with Shift key Seion + Shift can output Handakuon True True False True True False False 6 True 2 2 8 4 True Thumb _Shift Key Table: True thumb:button_custom_table GTK_FILL GTK_FILL ... True True True False True 1 2 GTK_FILL GTK_FILL False True 7 True <b>Thumb Shift Layout</b> True False 0 True Thumb Shift vbox5 4 False True vertical 8 4 True 0 none True vertical 4 4 8 8 12 True 2 3 8 4 True _Edit Dictionary Command: True dict:entry-edit-dict-command GTK_FILL GTK_FILL True True True GTK_FILL 1 2 ... True True True False True GTK_FILL GTK_FILL 2 3 True _Add Word Command: True dict:entry-add-word-command GTK_FILL GTK_FILL 1 2 True True True GTK_FILL 1 2 1 2 ... True True True False True GTK_FILL GTK_FILL 2 3 1 2 False True 0 True <b>Default Dictionary Configuration</b> True False 0 True 0 none True vertical 4 4 8 8 12 True True 220 automatic automatic in True True 0 True horizontal 4 end _View True True True False True False False 0 _Add True True True True False False False 1 _Edit True True True True False False False 2 _Delete True True True True False False False 3 False False 1 True horizontal 4 end _Up True You can change the order on language bar True True True False False False 0 _Down True You can change the order on language bar True True True False False False 1 False False 2 True <b>Extended Dictionaries</b> True False 1 True Dictionary vbox6 5 False True vertical 10 6 True False True About about_vbox 6 False 2 True horizontal end _Close True True True True False False False 0 False end 0 btn_close 340 300 Edit Shortcut True dialog True vertical True vertical 5 6 True True 1 automatic automatic in 150 True True False 0 True horizontal 8 True Key Code: False False 0 True True 1 ... True True False True False False 2 False False 1 True horizontal 8 True Modifier: False False 0 True horizontal A_lternate True True False True True 0 Co_ntrol True True False True True 1 _Shift True True False True True 2 1 False False 2 True horizontal 6 end _Add True True False True True False False False 0 _Refresh True False True True False False False 1 _Delete True True False True True False False False 2 False False 3 2 True horizontal end _Cancel True True True True False False False 0 _OK True True True True False False False 1 False end 0 cancelbutton101 okbutton101 400 470 True dialog True vertical 5 6 True horizontal 5 6 True 0 True combobox_custom_key_table False False 0 True False False 1 False False 0 True horizontal 5 6 True True 1 automatic automatic in 250 300 True True 0 True vertical start 6 True _Input Characters True entry_input_custom_key 0 True 3 1 True _Output Characters True entry_output_custom_key 2 True 3 3 False _Left Thumb Shift True entry_left_thumb_shift_custom_key 4 False 3 5 False _Right Thumb Shift True entry_right_thumb_shift_custom_key 6 False 3 7 True _Add True True True True False 8 True _Remove True True True True False 9 False False 1 1 True horizontal end True _Close True True True True False False 0 False end 0 closebutton301 5 False True center-on-parent dialog True question yes-no Confirmation You are about to close the setup dialog, is that OK? True vertical 2 True horizontal end False end 0 5 False True center-on-parent dialog True warning yes-no Notice! You are about to close the setup dialog without saving your changes, is that OK? True vertical 2 True horizontal end False end 0 5 False True center-on-parent dialog True cancel Please press a key (or a key combination) The dialog will be closed when the key is released True vertical 2 True horizontal end False end 0 5 False True center-on-parent dialog True warning ok Invalid keysym This keysym is not valid True vertical 2 True horizontal end False end 0 True vertical True 10 True 2 2 8 4 True _Short Label: True dict:short_entry GTK_FILL True True True 1 1 2 True _Description: True dict:long_entry 1 2 GTK_FILL True True True 1 2 1 2 False False _Use your dictionary alone with switching dictionaries True True False True True True False False 1 _Embed your dictionary in the system dictionary True True False True True False False 2 Enable the _reverse conversion False True False True True False False 3 IBus-Anthy Copyright © 2007–2008 Peng Huang Copyright © 2009 Hideaki ABE Copyright © 2009–2018 Takao Fujiwara Copyright © 2007–2018 Red Hat, Inc. The Anthy engine for the IBus input platform GPL https://github.com/ibus/ibus/wiki Takao Fujiwara <takao.fujiwara1@gmail.com> translator_credits True ibus-anthy-1.5.17/setup/python3/000077500000000000000000000000001475510605700164465ustar00rootroot00000000000000ibus-anthy-1.5.17/setup/python3/Makefile.am000066400000000000000000000062051475510605700205050ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. desktop_in_in_files = ibus-setup-anthy.desktop.in.in desktop_in_files = $(desktop_in_in_files:.in.in=.in) $(desktop_in_files): %.desktop.in: %.desktop.in.in Makefile $(AM_V_GEN) sed \ -e "s|\@libexecdir\@|$(libexecdir)|" \ -e "s|\@pkgdatadir\@|$(pkgdatadir)|" \ $< > $@.tmp && mv $@.tmp $@ desktopdir=$(datadir)/applications desktop_DATA = ibus-setup-anthy.desktop $(desktop_DATA): $(desktop_in_files) Makefile $(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ BUILT_SOURCES = \ _config.py \ $(NULL) libexec_SCRIPTS = ibus-setup-anthy setup_anthy_PYTHON = \ _config.py \ anthyprefs.py \ main.py \ prefs.py \ setup.ui \ $(NULL) setup_anthy_built_files = \ $(BUILT_SOURCES) \ $(libexec_SCRIPTS) \ $(NULL) setup_anthy_built_in_files = $(addsuffix .in, $(setup_anthy_built_files)) setup_anthydir = $(datadir)/ibus-anthy/setup CONFIG_CLEAN_FILES = \ $(BUILT_SOURCES) \ $(NULL) CLEANFILES = \ $(BUILT_SOURCES) \ $(desktop_DATA) \ $(desktop_in_files) \ $(libexec_SCRIPTS) \ *.pyc \ $(NULL) EXTRA_DIST = \ $(desktop_in_in_files) \ $(setup_anthy_built_in_files) \ $(NULL) ibus-setup-anthy: ibus-setup-anthy.in sed -e "s|\@prefix\@|$(prefix)|g" \ -e "s|\@localedir\@|$(localedir)|g" \ -e "s|\@PYTHON\@|$(PYTHON)|g" \ $< > $@ _config.py: _config.py.in sed -e "s|\@pkgdatadir\@|$(pkgdatadir)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@datadir\@|$(datadir)|g" \ -e "s|\@ANTHY_PC\@|$(ANTHY_PC)|g" \ -e "s|\@LAYOUT\@|$(LAYOUT)|g" \ -e "s|\@SYMBOL_CHAR_INT\@|$(SYMBOL_CHAR_INT)|g" \ -e "s|\@ICON_PREFERENCE\@|$(ICON_PREFERENCE)|g" \ -e "s|\@VERSION\@|$(VERSION)|g" \ $< > $@ # Need a time lag between .py and .py.in files to build .py files # because *_PYTHON valuables are installed in the tarball. dist-hook: @sleep 1; \ for in_file in $(setup_anthy_built_in_files) ; do \ if [ -f $(distdir)/$(srcdir)/$$in_file ] ; then \ touch $(distdir)/$(srcdir)/$$in_file; \ fi; \ done; test: $(ENV_IBUS_TEST) DBUS_DEBUG=true \ LANG=en_US \ PYTHONPATH=$(abs_top_srcdir):$(pyexecdir) \ IBUS_LOCALEDIR=@localedir@ \ $(PYTHON) $(srcdir)/main.py ibus-anthy-1.5.17/setup/python3/_config.py.in000077700000000000000000000000001475510605700267062../../engine/python3/_config.py.inustar00rootroot00000000000000ibus-anthy-1.5.17/setup/python3/anthyprefs.py000066400000000000000000000225211475510605700212050ustar00rootroot00000000000000# -*- coding: utf-8 -*- # vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys import _config as config from prefs import Prefs N_ = lambda a : a __all__ = ['AnthyPrefs'] class AnthyPrefs(Prefs): _char_to_config_key = None def __init__(self): super(AnthyPrefs, self).__init__() def get_japanese_ordered_list(self): return _japanese_ordered_list def get_version(self): return config.VERSION # Convert gsettings key to typing sequences # E.g. 'largea-bracketleft' to 'A[' def typing_from_config_key(self, gkeys): retval = '' for key in gkeys.split('-'): if key in _supported_gsettings_key_chars: retval += key continue try: ch = _config_key_to_char[key] except KeyError: print('Not supported key in gsettings', gkeys, file=sys.stderr) retval = '' break retval += ch return retval # Convert typing sequences to gsettings key. # E.g. 'A[' to 'largea-bracketleft' def typing_to_config_key(self, typing): retval = '' if self._char_to_config_key == None: self._char_to_config_key = {} for _key, _ch in list(_config_key_to_char.items()): self._char_to_config_key[_ch] = _key for ch in typing: if ch in _supported_gsettings_key_chars: if retval != '': retval += '-' retval += ch continue try: key = self._char_to_config_key[ch] except KeyError: print('Not supported key in gsettings', typing, file=sys.stderr) retval = '' break if retval != '': retval += '-' retval += key return retval def get_value(self, section, key): not_sorted = super(AnthyPrefs, self).get_value(section, key) if section == 'shortcut' and type(not_sorted) == dict: retval = dict.fromkeys(_cmd_keys, []) retval.update(not_sorted) return retval return not_sorted # Sad! dict.keys() doesn't return the saved order. # locale.strcoll() also just returns the Unicode code point. # Unicode order is wrong in Japanese large 'a' and small 'a'. # The workaround is to save the order here... _japanese_ordered_list = [ 'あ', 'い', 'う', 'え', 'お', 'ぁ', 'ぃ', 'ぅ', 'ぇ', 'ぉ', 'いぇ', 'うぁ', 'うぃ', 'うぅ', 'うぇ', 'うぉ', 'うゃ', 'うゅ', 'うょ', 'か', 'き', 'く', 'け', 'こ', 'ゕ', 'ゖ', 'ヵ', 'ヶ', 'が', 'ぎ', 'ぐ', 'げ', 'ご', 'きゃ', 'きぃ', 'きゅ', 'きぇ', 'きょ', 'くぁ', 'くぃ', 'くぅ', 'くぇ', 'くぉ', 'ぎゃ', 'ぎぃ', 'ぎゅ', 'ぎぇ', 'ぎょ', 'ぐぁ', 'ぐぃ', 'ぐぅ', 'ぐぇ', 'ぐぉ', 'さ', 'し', 'す', 'せ', 'そ', 'ざ', 'じ', 'ず', 'ぜ', 'ぞ', 'しゃ', 'しぃ', 'しゅ', 'しぇ', 'しょ', 'じゃ', 'じぃ', 'じゅ', 'じぇ', 'じょ', 'すぅぃ', 'すぇ', 'ずぇ', 'た', 'ち', 'つ', 'て', 'と', 'だ', 'ぢ', 'づ', 'で', 'ど', 'っ', 'ちゃ', 'ちぃ', 'ちゅ', 'ちぇ', 'ちょ', 'ぢぃ', 'ぢぇ', 'ぢゃ', 'ぢゅ', 'ぢょ', 'つぁ', 'つぃ', 'つぇ', 'つぉ', 'つゃ', 'つぃぇ', 'つゅ', 'つょ', 'づぁ', 'づぃ', 'づぇ', 'づぉ', 'づゃ', 'づぃぇ', 'づゅ', 'づょ', 'てぃ', 'てぇ', 'てゃ', 'てゅ', 'てょ', 'とぅ', 'でぃ', 'でぇ', 'でゃ', 'でゅ', 'でょ', 'どぅ', 'な', 'に', 'ぬ', 'ね', 'の', 'にぃ', 'にぇ', 'にゃ', 'にゅ', 'にょ', 'は', 'ひ', 'ふ', 'へ', 'ほ', 'ば', 'び', 'ぶ', 'べ', 'ぼ', 'ぱ', 'ぴ', 'ぷ', 'ぺ', 'ぽ', 'ひぃ', 'ひぇ', 'ひゃ', 'ひゅ', 'ひょ', 'びぃ', 'びぇ', 'びゃ', 'びゅ', 'びょ', 'ぴぃ', 'ぴぇ', 'ぴゃ', 'ぴゅ', 'ぴょ', 'ふぁ', 'ふぃ', 'ふぇ', 'ふぉ', 'ふゃ', 'ふゅ', 'ふょ', 'ぶぁ', 'ぶぇ', 'ぶぉ', 'ぷぁ', 'ぷぇ', 'ぷぉ', 'ま', 'み', 'む', 'め', 'も', 'みぃ', 'みぇ', 'みゃ', 'みゅ', 'みょ', 'や', 'ゆ', 'よ', 'ゃ', 'ゅ', 'ょ', 'ら', 'り', 'る', 'れ', 'ろ', 'りぃ', 'りぇ', 'りゃ', 'りゅ', 'りょ', 'わ', 'を', 'ん', 'ゎ', 'ゐ', 'ゑ', 'ー', 'ヴぁ', 'ヴぃ', 'ヴ', 'ヴぇ', 'ヴぉ', 'ヴゃ', 'ヴぃぇ', 'ヴゅ', 'ヴょ', ] # http://git.gnome.org/browse/glib/tree/gio/glib-compile-schemas.c#n765 # gsettings supports keys named by "abcdefghijklmnopqrstuvwxyz0123456789-" # and ibus-anthy uses '-' as the delimiter. _supported_gsettings_key_chars = "abcdefghijklmnopqrstuvwxyz0123456789" _config_key_to_char = { # no modifiers keys 'minus' : '-', 'asciicircum' : '^', 'at' : '@', 'bracketleft' : '[', 'semicolon' : ';', 'colon' : ':', 'bracketright' : ']', 'comma' : ',', 'period' : '.', 'slash' : '/', 'backslash' : '\\', # shift modifiered keys 'exclam' : '!', 'quotedbl' : '"', 'numbersign' : '#', 'dollar' : '$', 'percent' : '%', 'ampersand' : '&', 'apostrophe' : '\'', 'parenleft' : '(', 'parenright' : ')', 'asciitilde' : '~', 'equal' : '=', 'bar' : '|', 'largeq' : 'Q', 'largew' : 'W', 'largee' : 'E', 'larger' : 'R', 'larget' : 'T', 'largey' : 'Y', 'largeu' : 'U', 'largei' : 'I', 'largeo' : 'O', 'largep' : 'P', 'grave' : '`', 'braceleft' : '{', 'largea' : 'A', 'larges' : 'S', 'larged' : 'D', 'largef' : 'F', 'largeg' : 'G', 'largeh' : 'H', 'largej' : 'J', 'largek' : 'K', 'largel' : 'L', 'plus' : '+', 'asterisk' : '*', 'braceright' : '}', 'largez' : 'Z', 'largex' : 'X', 'largec' : 'C', 'largev' : 'V', 'largeb' : 'B', 'largen' : 'N', 'largem' : 'M', 'less' : '<', 'greater' : '>', 'question' : '?', 'underscore' : '_', 'yen' : '¥', } _cmd_keys = [ 'on_off', 'circle_input_mode', 'circle_kana_mode', 'circle_typing_method', 'circle_dict_method', 'latin_mode', 'wide_latin_mode', 'hiragana_mode', 'katakana_mode', 'half_katakana_mode', # 'cancel_pseudo_ascii_mode_key', 'hiragana_for_latin_with_shift', 'insert_space', 'insert_alternate_space', 'insert_half_space', 'insert_wide_space', 'backspace', 'delete', 'commit', 'convert', 'predict', 'cancel', 'cancel_all', 'escape_to_latin', 'reconvert', # 'do_nothing', 'select_first_candidate', 'select_last_candidate', 'select_next_candidate', 'select_prev_candidate', 'candidates_page_up', 'candidates_page_down', 'move_caret_first', 'move_caret_last', 'move_caret_forward', 'move_caret_backward', 'select_first_segment', 'select_last_segment', 'select_next_segment', 'select_prev_segment', 'shrink_segment', 'expand_segment', 'commit_first_segment', 'commit_selected_segment', 'select_candidates_1', 'select_candidates_2', 'select_candidates_3', 'select_candidates_4', 'select_candidates_5', 'select_candidates_6', 'select_candidates_7', 'select_candidates_8', 'select_candidates_9', 'select_candidates_0', 'convert_to_char_type_forward', 'convert_to_char_type_backward', 'convert_to_hiragana', 'convert_to_katakana', 'convert_to_half', 'convert_to_half_katakana', 'convert_to_wide_latin', 'convert_to_latin', 'convert_to_hiragana_all', 'convert_to_katakana_all', 'convert_to_half_all', 'convert_to_half_katakana_all', 'convert_to_wide_latin_all', 'convert_to_latin_all', 'dict_admin', 'add_word', 'start_setup', ] _dummy_translatable_strings = [ N_('General'), N_('Zip Code Conversion'), N_('Symbol'), N_('Old Character Style'), N_('Era'), N_('Emoji'), ] ibus-anthy-1.5.17/setup/python3/ibus-setup-anthy.desktop.in.in000066400000000000000000000002551475510605700242760ustar00rootroot00000000000000[Desktop Entry] Name=IBus Anthy Setup Comment=Set up IBus Anthy engine Exec=@libexecdir@/ibus-setup-anthy Icon=ibus-anthy NoDisplay=true Type=Application StartupNotify=true ibus-anthy-1.5.17/setup/python3/ibus-setup-anthy.in000066400000000000000000000020341475510605700222160ustar00rootroot00000000000000#!/bin/sh # vim:set noet ts=4: # # ibus-tmpl - The Input Bus template project # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-2016 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. export IBUS_LOCALEDIR=@localedir@ exec @PYTHON@ @prefix@/share/ibus-anthy/setup/main.py "$@" ibus-anthy-1.5.17/setup/python3/main.py000066400000000000000000002100271475510605700177460ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2021 Takao Fujiwara # Copyright (c) 2007-2019 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. from os import environ, getuid, path import binascii import codecs import functools import locale import os, sys import xml.dom.minidom import gettext from gettext import dgettext from gi import require_version as gi_require_version gi_require_version('Gio', '2.0') gi_require_version('GLib', '2.0') gi_require_version('Gtk', '3.0') gi_require_version('Gdk', '3.0') gi_require_version('GdkX11', '3.0') gi_require_version('Pango', '1.0') gi_require_version('IBus', '1.0') from gi.repository import Gio from gi.repository import GLib # set_prgname before importing other modules to show the name in warning # messages when import modules are failed. E.g. Gtk. GLib.set_prgname('ibus-setup-anthy') from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GdkX11 from gi.repository import Pango from gi.repository import IBus import _config as config from anthyprefs import AnthyPrefs DOMAINNAME = 'ibus-anthy' _ = lambda a : dgettext('ibus-anthy', a) def l_to_s(l): return str(sorted([str(s) for s in l])).replace('\'', '') def s_to_l(s): return [] if s == '[]' else s[1:-1].replace(' ', '').split(',') class AnthySetup(object): def __init__(self): # Python's locale module doesn't provide all methods on some # operating systems like FreeBSD try: locale.bindtextdomain(DOMAINNAME, config.LOCALEDIR) locale.bind_textdomain_codeset(DOMAINNAME, 'UTF-8') except AttributeError: pass gettext.bindtextdomain(DOMAINNAME, config.LOCALEDIR) self.__prefs = AnthyPrefs() builder_file = path.join(path.dirname(__file__), 'setup.ui') self.__builder = builder = Gtk.Builder() builder.set_translation_domain(DOMAINNAME) builder.add_from_file(builder_file) toplevel = builder.get_object('main') parent_xid = 0 parent_wmname = None parent_wmclass = None try: parent_xid = int(environ['IBUS_SETUP_XID']) if parent_xid != 0: parent_wmname = 'ibus-setup' parent_wmclass = 'Ibus-setup' except: pass try: if parent_xid == 0: parent_xid = int(environ['GNOME_CONTROL_CENTER_XID']) if parent_xid != 0: parent_wmname = 'gnome-conrol-center' parent_wmclass = 'Gnome-conrol-center' except: pass if parent_xid != 0: def set_transient(obj, pspec): window = toplevel.get_window() if window == None: return parent_window = GdkX11.X11Window.foreign_new_for_display(Gdk.Display.get_default(), parent_xid) if parent_window != None: window.set_transient_for(parent_window) toplevel.set_wmclass(parent_wmname, parent_wmclass) toplevel.set_modal(True) toplevel.set_type_hint(Gdk.WindowTypeHint.DIALOG) toplevel.connect('notify::window', set_transient) toplevel.show() self.__init_bus_connected() def __init_bus_connected(self): builder = self.__builder prefs = self.__prefs self.__thumb_kb_layout_mode = None self.__thumb_kb_layout = None self.__japanese_ordered_dict = {} # glade 'icon_name' property has a custom scaling and it seems # to be difficult to show the complicated small icon in metacity. # This can add the pixbuf without scaling. anthydir = path.dirname(path.dirname(__file__)) if not anthydir: anthydir = '/usr/share/ibus-anthy' icon_path = path.join(anthydir, 'icons', 'ibus-anthy.png') if path.exists(icon_path): builder.get_object('main').set_icon_from_file(icon_path) else: icon_path = 'ibus-anthy' builder.get_object('main').set_icon_name(icon_path) for name in ['input-mode', 'typing-method', 'conversion-segment-mode', 'period-style', 'symbol-style', 'ten-key-mode', 'behavior-on-focus-out', 'behavior-on-period', 'half-width-symbol', 'half-width-number', 'half-width-space', 'latin-with-shift', 'thumb:keyboard-layout-mode', 'thumb:keyboard-layout', 'thumb:fmv-extension', 'thumb:handakuten']: section, key = self.__get_section_key(name) prefs.bind(section, key, builder.get_object(name), 'active', Gio.SettingsBindFlags.DEFAULT) prefs.bind('thumb', 'keyboard-layout-mode', builder.get_object('thumb:keyboard-layout'), 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN) tv = builder.get_object('menu-visible:treeview') ls = Gtk.ListStore(str, bool, str) tv.set_model(ls) column = Gtk.TreeViewColumn(' ') renderer = Gtk.CellRendererToggle() renderer.set_radio(False) renderer.connect('toggled', self.__renderer_toggled_cb, ls) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_menu_visible_cell_cb, 1) tv.append_column(column) column = Gtk.TreeViewColumn(_("Menu label")) renderer = Gtk.CellRendererText() column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__text_menu_visible_cell_cb, 2) tv.append_column(column) self.__append_menus_in_model() l = ['default', 'atok', 'wnn'] s_type = prefs.get_value('common', 'shortcut-type') s_type = s_type if s_type in l else 'default' builder.get_object('shortcut-type').set_active(l.index(s_type)) prefs.bind('common', 'page-size', builder.get_object('page-size').get_adjustment(), 'value', Gio.SettingsBindFlags.DEFAULT) tv = builder.get_object('shortcut') tv.append_column(Gtk.TreeViewColumn(_("Command"), Gtk.CellRendererText(), text=0)) renderer = Gtk.CellRendererText() renderer.set_property('ellipsize', Pango.EllipsizeMode.END) tv.append_column(Gtk.TreeViewColumn(_("Shortcut"), renderer, text=1)) tv.get_selection().connect_after('changed', self.on_selection_changed, 0) ls = Gtk.ListStore(str, str) shortcuts = self.__prefs.get_value('shortcut', s_type) for k in shortcuts.keys(): ls.append([k, l_to_s(shortcuts[k])]) tv.set_model(ls) self.__keymap = None GLib.idle_add(self.__update_keymap_label, priority = GLib.PRIORITY_LOW) self.__thumb_kb_layout_mode = builder.get_object('thumb:keyboard-layout-mode') self.__thumb_kb_layout = builder.get_object('thumb:keyboard-layout') self.__set_thumb_kb_label() for name in ['thumb:ls', 'thumb:rs']: section, key = self.__get_section_key(name) builder.get_object(name).set_text(prefs.get_value(section, key)) tv = builder.get_object('es:treeview') tv.append_column(Gtk.TreeViewColumn('', Gtk.CellRendererText(), text=0)) tv.get_selection().connect_after('changed', self.on_selection_changed, 1) tv.set_model(Gtk.ListStore(str)) key = 'dict-admin-command' cli = self.__get_dict_cli_from_list(prefs.get_value('common', key)) name = 'dict:entry-edit-dict-command' builder.get_object(name).set_text(cli) key = 'add-word-command' cli = self.__get_dict_cli_from_list(prefs.get_value('common', key)) name = 'dict:entry-add-word-command' builder.get_object(name).set_text(cli) tv = builder.get_object('dict:view') column = Gtk.TreeViewColumn(' ') renderer = Gtk.CellRendererText() column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__text_cell_data_cb, 1) tv.append_column(column) column = Gtk.TreeViewColumn(_("Description")) renderer = Gtk.CellRendererText() column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__text_cell_data_cb, 2) column.set_expand(True) tv.append_column(column) # Translators: "Embd" is an abbreviation of "embedded". column = Gtk.TreeViewColumn(_("Embd")) renderer = Gtk.CellRendererToggle() renderer.set_radio(False) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_cell_data_cb, 3) tv.append_column(column) # Translators: "Sgl" is an abbreviation of "single". column = Gtk.TreeViewColumn(_("Sgl")) renderer = Gtk.CellRendererToggle() renderer.set_radio(False) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_cell_data_cb, 4) tv.append_column(column) ''' Unfortunately reverse conversion is too slow. # Translators: "Rev" is an abbreviation of "reverse". column = Gtk.TreeViewColumn(_("Rev")) renderer = Gtk.CellRendererToggle() renderer.set_radio(False) column.pack_start(renderer, False) column.set_cell_data_func(renderer, self.__toggle_cell_data_cb, 5) tv.append_column(column) ''' ls = Gtk.ListStore(str, str, str, bool, bool, bool) tv.set_model(ls) self.__append_dicts_in_model() self.__init_japanese_sort() self.__init_about_vbox(icon_path) builder.connect_signals(self) def __init_japanese_sort(self): japanese_ordered_dict = {} japanese_ordered_list = self.__prefs.get_japanese_ordered_list() for index, c in enumerate(japanese_ordered_list): japanese_ordered_dict[c] = index self.__japanese_ordered_dict = japanese_ordered_dict; def __init_about_vbox(self, icon_path): about_dialog = self.__builder.get_object('about_dialog') about_vbox = self.__builder.get_object('about_vbox') about_dialog.set_version(self.__prefs.get_version()) if icon_path != None: if icon_path[0] == '/': image = Gtk.Image.new_from_file(icon_path) about_dialog.set_logo(image.get_pixbuf()) else: icon_theme = Gtk.IconTheme.get_default() try: pixbuf = icon_theme.load_icon(icon_path, 48, 0) about_dialog.set_logo(pixbuf) except Exception as err: print('Not found icon', str(err), file=sys.stderr) print('Need to run gtk-update-icon-cache', file=sys.stderr) content_area = about_dialog.get_content_area() list = content_area.get_children() vbox = list[0] for w in vbox.get_children(): old_parent = w.props.parent w.unparent() w.emit('parent-set', old_parent) about_vbox.pack_start(w, False, False, 0) def __get_userhome(self): if 'HOME' not in environ: import pwd userhome = pwd.getpwuid(getuid()).pw_dir else: userhome = environ['HOME'] userhome = userhome.rstrip('/') return userhome def __get_section_key(self, name): i = name.find(':') if i > 0: section = name[:i] key = name[i + 1:] else: section = 'common' key = name return (section, key) def __run_message_dialog(self, message, type=Gtk.MessageType.INFO): dlg = Gtk.MessageDialog( transient_for=self.__builder.get_object('main'), message_type=type, buttons=Gtk.ButtonsType.OK, text=message) dlg.run() dlg.destroy() def _get_shortcut_sec(self): l = ['default', 'atok', 'wnn'] iter = self.__builder.get_object('shortcut-type').get_active_iter() model = self.__builder.get_object('shortcut-type').get_model() s_type = model[iter][0].lower() return 'shortcut/' + (s_type if s_type in l else 'default') def __get_shortcut_group(self): l = ['default', 'atok', 'wnn'] iter = self.__builder.get_object('shortcut-type').get_active_iter() model = self.__builder.get_object('shortcut-type').get_model() s_type = model[iter][0].lower() return s_type if s_type in l else 'default' def __japanese_tuple_sort(self, a, b): if a[1] == b[1]: # http://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons return (a[0] > b[0]) - (a[0] < b[0]) elif a[1] in self.__japanese_ordered_dict and \ b[1] in self.__japanese_ordered_dict: return self.__japanese_ordered_dict[a[1]] - \ self.__japanese_ordered_dict[b[1]] elif a[1] not in self.__japanese_ordered_dict and \ b[1] in self.__japanese_ordered_dict: return 1 elif a[1] in self.__japanese_ordered_dict and \ b[1] not in self.__japanese_ordered_dict: return -1 else: return (a[1] > b[1]) - (a[1] < b[1]) def __japanese_thumb_sort(self, a, b): # http://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons return (a[0] > b[0]) - (a[0] < b[0]) def __renderer_toggled_cb(self, renderer, path, model): prefs = self.__prefs enabled = not model[path][1] model[path][1] = enabled key = model[path][0] prefs.set_value('common', key, enabled) def __toggle_menu_visible_cell_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('menu-visible:treeview').get_model() active = l.get_value(iter, id) renderer.set_property('active', active) def __text_menu_visible_cell_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('menu-visible:treeview').get_model() text = l.get_value(iter, id) renderer.set_property('text', text) def __append_menus_in_model(self): prefs = self.__prefs l = self.__builder.get_object('menu-visible:treeview').get_model() l.append(['show-input-mode', prefs.get_value('common', 'show-input-mode'), _("Input mode")]) l.append(['show-typing-method', prefs.get_value('common', 'show-typing-method'), _("Typing method")]) l.append(['show-segment-mode', prefs.get_value('common', 'show-segment-mode'), _("Segment mode")]) l.append(['show-dict-mode', prefs.get_value('common', 'show-dict-mode'), _("Dictionary mode")]) l.append(['show-dict-config', prefs.get_value('common', 'show-dict-config'), _("Dictionary - Anthy")]) l.append(['show-preferences', prefs.get_value('common', 'show-preferences'), _("Preferences - Anthy")]) def __get_romaji_treeview_custom_key_table(self, method): prefs = self.__prefs rule = {} ls = Gtk.ListStore(str, str, str) tv = self.__builder.get_object('treeview_custom_key_table') section = 'romaji-typing-rule' keymap = prefs.get_value(section, 'list')[method] for key in keymap.keys(): value = keymap[key] ch = prefs.typing_from_config_key(key) if ch == '': continue # config.set_value(key, None) is not supported. if value != None and value != '': rule[ch] = value for key, value in sorted(list(rule.items()), \ key = functools.cmp_to_key(self.__japanese_tuple_sort)): ls.append(['romaji', key, value]) tv.set_model(None) tv.append_column(Gtk.TreeViewColumn(_(_("Input Chars")), Gtk.CellRendererText(), text=1)) tv.append_column(Gtk.TreeViewColumn(_(_("Output Chars")), Gtk.CellRendererText(), text=2)) tv.set_model(ls) return tv def __get_kana_treeview_custom_key_table(self, method): prefs = self.__prefs rule = {} ls = Gtk.ListStore(str, str, str) tv = self.__builder.get_object('treeview_custom_key_table') section = 'kana-typing-rule' keymap = prefs.get_value(section, 'list')[method] for key in keymap.keys(): value = keymap[key] ch = prefs.typing_from_config_key(key) if ch == '': continue # config.set_value(key, None) is not supported. if value != None and value != '': rule[ch] = value for key, value in sorted(list(rule.items()), \ key = functools.cmp_to_key(self.__japanese_tuple_sort)): ls.append(['kana', key, value]) tv.set_model(None) tv.append_column(Gtk.TreeViewColumn(_(_("Input Chars")), Gtk.CellRendererText(), text=1)) tv.append_column(Gtk.TreeViewColumn(_(_("Output Chars")), Gtk.CellRendererText(), text=2)) tv.set_model(ls) return tv def __get_thumb_treeview_custom_key_table(self, method): prefs = self.__prefs rule = {} ls = Gtk.ListStore(str, str, str, str, str) tv = self.__builder.get_object('treeview_custom_key_table') section = 'thumb-typing-rule' keymap = prefs.get_value(section, 'list')[method] for key in keymap.keys(): value = keymap[key] ch = prefs.typing_from_config_key(key) if ch == '': continue # config.set_value(key, None) is not supported. if value != None and len(value) == 3 and \ ((value[0] != None and value[0] != '') or \ (value[1] != None and value[1] != '') or \ (value[2] != None and value[2] != '')): rule[ch] = {} rule[ch][0] = value[0] rule[ch][1] = value[1] rule[ch][2] = value[2] for key, value in sorted(list(rule.items()), \ key = functools.cmp_to_key(self.__japanese_thumb_sort)): ls.append(['thumb', key, value[0], value[2], value[1]]) tv.set_model(None) tv.append_column(Gtk.TreeViewColumn(_(_("Input")), Gtk.CellRendererText(), text=1)) tv.append_column(Gtk.TreeViewColumn(_(_("Single")), Gtk.CellRendererText(), text=2)) tv.append_column(Gtk.TreeViewColumn(_(_("Left")), Gtk.CellRendererText(), text=3)) tv.append_column(Gtk.TreeViewColumn(_(_("Right")), Gtk.CellRendererText(), text=4)) tv.set_model(ls) return tv def __show_dialog_custom_key_table_extention(self, mode): hbox_combo = self.__builder.get_object('hbox_for_combobox_custom_key_table') label_left = self.__builder.get_object('label_left_thumb_shift_custom_key') entry_left = self.__builder.get_object('entry_left_thumb_shift_custom_key') label_right = self.__builder.get_object('label_right_thumb_shift_custom_key') entry_right = self.__builder.get_object('entry_right_thumb_shift_custom_key') if mode == 'thumb': hbox_combo.show() label_left.show() entry_left.show() label_right.show() entry_right.show() elif mode == 'kana': hbox_combo.show() label_left.hide() entry_left.hide() label_right.hide() entry_right.hide() else: hbox_combo.hide() label_left.hide() entry_left.hide() label_right.hide() entry_right.hide() def __connect_dialog_custom_key_table_buttons(self, mode): tv = self.__builder.get_object('treeview_custom_key_table') tv.get_selection().connect_after('changed', self.on_selection_custom_key_table_changed, 0) entry = self.__builder.get_object('entry_input_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) entry = self.__builder.get_object('entry_output_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) entry = self.__builder.get_object('entry_left_thumb_shift_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) entry = self.__builder.get_object('entry_right_thumb_shift_custom_key') entry.connect('changed', self.on_entry_custom_key_changed, mode) button = self.__builder.get_object('button_add_custom_key') button.set_sensitive(False) button.connect('clicked', self.on_btn_add_custom_key, mode) button = self.__builder.get_object('button_remove_custom_key') button.set_sensitive(False) button.connect('clicked', self.on_btn_remove_custom_key, tv) def __disconnect_dialog_custom_key_table_buttons(self): tv = self.__builder.get_object('treeview_custom_key_table') combobox = self.__builder.get_object('combobox_custom_key_table') if tv != None: for column in tv.get_columns(): tv.remove_column(column) for child in tv.get_children(): tv.remove(child) entry = self.__builder.get_object('entry_input_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) entry.set_text('') entry = self.__builder.get_object('entry_output_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) entry.set_text('') entry = self.__builder.get_object('entry_left_thumb_shift_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) entry = self.__builder.get_object('entry_right_thumb_shift_custom_key') entry.disconnect_by_func(self.on_entry_custom_key_changed) button = self.__builder.get_object('button_add_custom_key') button.disconnect_by_func(self.on_btn_add_custom_key) button = self.__builder.get_object('button_remove_custom_key') button.disconnect_by_func(self.on_btn_remove_custom_key) combobox.clear() combobox.disconnect_by_func(self.on_cb_custom_key_table_changed) def __run_dialog_custom_key_table(self, widget, mode): prefs = self.__prefs dlg = self.__builder.get_object('dialog_custom_key_table') dlg.set_transient_for(widget.get_toplevel()) label = self.__builder.get_object('label_custom_key_table') label_output = self.__builder.get_object('label_output_custom_key') list_labels = [] if mode == 'romaji': dlg.set_title(_("Customize Romaji Key Table")) label.set_label(_("_Romaji Key Table:")) label_output.set_label(_("_Output Chars")) list_labels = [['default', _("Default")]] self.__show_dialog_custom_key_table_extention(mode) elif mode == 'kana': dlg.set_title(_("Customize Kana Key Table")) label.set_label(_("_Kana Key Table:")) label_output.set_label(_("_Output Chars")) list_labels = [['jp', _("Japanese Keyboard Layout")], ['us', _("U.S. Keyboard Layout")]] self.__show_dialog_custom_key_table_extention(mode) elif mode == 'thumb': dlg.set_title(_("Customize Thumb Shift Key Table")) label.set_label(_("_Thumb Shift Key Table:")) label_output.set_label(_("Single _Output Chars")) list_labels = [['base', _("Base")], ['nicola-j-table', _("NICOLA-J key extension")], ['nicola-a-table', _("NICOLA-A key extension")], ['nicola-f-table', _("NICOLA-F key extension")], ['kb231-j-fmv-table', _("FMV KB231-J key extension")], ['kb231-a-fmv-table', _("FMV KB231-A key extension")], ['kb231-f-fmv-table', _("FMV KB231-F key extension")], ['kb611-j-fmv-table', _("FMV KB611-J key extension")], ['kb611-a-fmv-table', _("FMV KB611-A key extension")], ['kb611-f-fmv-table', _("FMV KB611-F key extension")], ] self.__show_dialog_custom_key_table_extention(mode) ls = Gtk.ListStore(str, str) for s in list_labels: ls.append([s[1], s[0]]) renderer = Gtk.CellRendererText() combobox = self.__builder.get_object('combobox_custom_key_table') combobox.pack_start(renderer, True) combobox.add_attribute(renderer, 'text', 0) combobox.set_model(ls) tv = None if mode == 'romaji': method = prefs.get_value('romaji-typing-rule', 'method') if method == None: method = 'default' tv = self.__get_romaji_treeview_custom_key_table(method) if mode == 'kana': method = prefs.get_value('kana-typing-rule', 'method') if method == None: method = 'jp' tv = self.__get_kana_treeview_custom_key_table(method) if mode == 'thumb': method = prefs.get_value('thumb-typing-rule', 'method') if method == None: method = 'base' tv = self.__get_thumb_treeview_custom_key_table(method) self.__connect_dialog_custom_key_table_buttons(mode) id = 0 # thumb uses all tables so the default is always 0. if mode != 'thumb': id = -1 for index, labels in enumerate(list_labels): if labels[0] == method: id = index break if id == -1: ls.append([method, method]) combobox.set_model(ls) id = len(list_labels) combobox.set_active(id) combobox.connect('changed', self.on_cb_custom_key_table_changed, mode) id = dlg.run() dlg.hide() self.__disconnect_dialog_custom_key_table_buttons() def __set_thumb_kb_label(self): if self.__thumb_kb_layout_mode == None or \ self.__thumb_kb_layout == None: return section, key = self.__get_section_key( Gtk.Buildable.get_name(self.__thumb_kb_layout_mode)) layout_mode = self.__prefs.get_value(section, key) if layout_mode: self.__thumb_kb_layout.set_sensitive(False) else: self.__thumb_kb_layout.set_sensitive(True) def __get_dict_cli_from_list(self, cli_list): cli_str = cli_list[0] if len(cli_list) <= 2: return cli_str cli_str = cli_str + ' ' + ' '.join(cli_list[2:]) return cli_str def __get_quoted_id(self, file): id = file has_mbcs = False for i in range(0, len(id)): if ord(id[i]) >= 0x7f: has_mbcs = True break if has_mbcs: id = str(binascii.hexlify(id.encode()), 'ascii') if id.find('/') >=0: id = id[id.rindex('/') + 1:] if id.find('.') >=0: id = id[:id.rindex('.')] if id.startswith('0x'): id = str(binascii.hexlify(id.encode()), 'ascii') has_mbcs = True if has_mbcs: id = '0x' + id return id def __get_dict_file_from_id(self, selected_id): files = self.__prefs.get_value('dict', 'files') return files.get(selected_id, None) def __is_system_dict_file_from_id(self, selected_id): prefs = self.__prefs dict_item = prefs.get_value('dict', 'list')[selected_id] return dict_item.is_system def __append_dict_id_in_model(self, id): prefs = self.__prefs section = 'dict/file/' + id dicts = prefs.get_value('dict', 'list') dict_item = dicts[id] short_label = dict_item.short_label long_label = dict_item.long_label embed = dict_item.embed single = dict_item.single reverse = dict_item.reverse if dict_item.is_system: long_label = _(long_label) l = self.__builder.get_object('dict:view').get_model() l.append([id, short_label, long_label, embed, single, reverse]) def __append_dicts_in_model(self): prefs = self.__prefs order = prefs.get_value('dict', 'order') dict_files = prefs.get_value('dict', 'files') if len(order) == 0: order = list(dict_files.keys()) for id in order: if id == 'embedded': continue files = dict_files[id] for file in files: if not path.exists(file): continue self.__append_dict_id_in_model(id) def __append_user_dict_from_dialog(self, file, id, new): files_dict = self.__prefs.get_value('dict', 'files') if new: files = [] for v in files_dict.values(): for f in v: files.append(f) if file in files: self.__run_message_dialog(_("Your choosed file has already been added: ") + file, Gtk.MessageType.ERROR) return if not path.exists(file): self.__run_message_dialog(_("The file you have chosen does not exist: ") + file, Gtk.MessageType.ERROR) return if path.isdir(file): self.__run_message_dialog(_("Your choosed file is a directory: " + file), Gtk.MessageType.ERROR) return if file.startswith(self.__get_userhome() + '/.anthy'): self.__run_message_dialog(_("You cannot add dictionaries in the anthy private directory: " + file), Gtk.MessageType.ERROR) return else: file = files_dict[id][0] if new: id = self.__get_quoted_id(file) if id == None or id == '': self.__run_message_dialog(_("Your file path is not good: ") + file, Gtk.MessageType.ERROR) return single = self.__builder.get_object('dict:single').get_active() embed = self.__builder.get_object('dict:embed').get_active() reverse = self.__builder.get_object('dict:reverse').get_active() short_label = self.__builder.get_object('dict:short_entry').get_text() if len(short_label) > 1: short_label = short_label[0] long_label = self.__builder.get_object('dict:long_entry').get_text() if new: order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) order.append(id) self.__prefs.set_value('dict', 'order', order) self.__prefs.set_list_item('dict', 'files', id, [file]) filename = file if filename.find('/') >=0: filename = filename[filename.rindex('/') + 1:] if filename.find('.') >=0: filname = filename[:filename.rindex('.')] if short_label == None or short_label == '': short_label = filename[0] if long_label == None or long_label == '': long_label = filename self.__update_dict_values(new, id, short_label, long_label, embed, single, reverse) files = [] def __init_dict_chooser_dialog(self): self.__builder.get_object('dict:single').set_active(True) self.__builder.get_object('dict:embed').set_active(False) self.__builder.get_object('dict:reverse').set_active(False) short_entry = self.__builder.get_object('dict:short_entry') short_entry.set_text('') short_entry.set_editable(True) long_entry = self.__builder.get_object('dict:long_entry') long_entry.set_text('') long_entry.set_editable(True) def __get_selected_dict_id(self): l, it = self.__builder.get_object('dict:view').get_selection().get_selected() if not it: return None return l.get_value(it, 0) def __set_selected_dict_to_dialog(self): selected_id = self.__get_selected_dict_id() if selected_id == None: return None dict_item = self.__prefs.get_value('dict', 'list')[selected_id] short_label = dict_item.short_label long_label = dict_item.long_label embed = dict_item.embed single = dict_item.single reverse = dict_item.reverse is_system_dict = dict_item.is_system if len(short_label) > 1: short_label = short_label[0] self.__builder.get_object('dict:single').set_active(single) self.__builder.get_object('dict:embed').set_active(embed) self.__builder.get_object('dict:reverse').set_active(reverse) short_entry = self.__builder.get_object('dict:short_entry') short_entry.set_text(short_label) long_entry = self.__builder.get_object('dict:long_entry') if is_system_dict: short_entry.set_editable(False) long_entry.set_text(_(long_label)) long_entry.set_editable(False) else: short_entry.set_editable(True) long_entry.set_text(long_label) long_entry.set_editable(True) return selected_id def __update_dict_values(self, new, id, short_label, long_label, embed, single, reverse): prefs = self.__prefs if new: dict_item = prefs.get_value('dict', 'template') dict_item.id = id dict_item.short_label = short_label dict_item.long_label = long_label dict_item.embed = embed dict_item.single = single dict_item.reverse = reverse l = self.__builder.get_object('dict:view').get_model() l.append([id, short_label, long_label, embed, single, reverse]) else: dict_item = prefs.get_value('dict', 'list')[id] if not dict_item.is_system: dict_item.short_label = short_label dict_item.long_label = long_label dict_item.embed = embed dict_item.single = single dict_item.reverse = reverse l, i = self.__builder.get_object('dict:view').get_selection().get_selected() if i : l[i] = [id, short_label, long_label, embed, single, reverse] prefs.set_list_item('dict', 'list', id, dict_item) def __text_cell_data_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('dict:view').get_model() text = l.get_value(iter, id) renderer.set_property('text', text) def __toggle_cell_data_cb(self, column, renderer, model, iter, id): l = self.__builder.get_object('dict:view').get_model() active = l.get_value(iter, id) renderer.set_property('active', active) def __resync_engine_file(self): user_config = path.join(self.__get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml') if not path.exists(user_config): return if not path.exists(system_config): os.unlink(user_config) return # path.getmtime depends on the build time rather than install time. def __get_engine_file_version(engine_file): version_str = '' dom = xml.dom.minidom.parse(engine_file) elements = dom.getElementsByTagName('version') nodes = [] if len(elements) > 0: nodes = elements[0].childNodes if len(nodes) > 0: version_str = nodes[0].data if version_str != '': version_str = version_str.strip() return version_str user_config_version = __get_engine_file_version(user_config) system_config_version = __get_engine_file_version(system_config) if system_config_version > user_config_version: import shutil shutil.copyfile(system_config, user_config) def __get_engine_file(self): user_config = path.join(self.__get_userhome(), '.config', 'ibus-anthy', 'engines.xml') system_config = path.join(config.PKGDATADIR, 'engine', 'default.xml') engine_file = None for f in [user_config, system_config]: if path.exists(f): engine_file = f break if engine_file == None: self.__run_message_dialog(_("The engine xml file does not exist: ") + system_config, Gtk.MessageType.ERROR) return None return engine_file def __get_keymap(self): keymap = '' layout = '' variant = '' option = '' engine_file = self.__get_engine_file() if engine_file == None: return None dom = xml.dom.minidom.parse(engine_file) nodes = dom.getElementsByTagName('layout')[0].childNodes if len(nodes) > 0: layout = nodes[0].data if layout != '': keymap = layout.strip() nodes = dom.getElementsByTagName('layout_variant')[0].childNodes if len(nodes) > 0: variant = nodes[0].data if variant != '': keymap += '(' + varaint.strip() + ')' nodes = dom.getElementsByTagName('layout_option')[0].childNodes if len(nodes) > 0: option = nodes[0].data if option != '': keymap += '[' + option.strip() + ']' return keymap def __parse_keymap(self, keymap): layout = None variant = None option = None length = keymap.find('(') if length >= 0: if layout == None: layout = keymap[0:length] keymap = keymap[length + 1:] length = keymap.find(')') if length > 0: variant = keymap[0:length] keymap = keymap[length + 1:] else: print('Invalid keymap', keymap, file=sys.stderr) return ('', '', '') length = keymap.find('[') if length >= 0: if layout == None: layout = keymap[0:length] keymap = keymap[length + 1:] length = keymap.find(']') if length > 0: option = keymap[0:length] keymap = keymap[length + 1:] else: print('Invalid keymap', keymap, file=sys.stderr) return ('', '', '') if layout == None: layout = keymap if layout == None: layout = '' if variant == None: variant = '' if option == None: option = '' return (layout, variant, option) def __save_keymap(self): engine_file = self.__get_engine_file() if engine_file == None: return None (layout, variant, option) = self.__parse_keymap(self.__keymap) dom = xml.dom.minidom.parse(engine_file) nodes = dom.getElementsByTagName('layout')[0].childNodes if len(nodes) == 0: nodes.append(dom.createTextNode(layout)) else: nodes[0].data = layout nodes = dom.getElementsByTagName('layout_variant')[0].childNodes if len(nodes) == 0: nodes.append(dom.createTextNode(variant)) else: nodes[0].data = variant nodes = dom.getElementsByTagName('layout_option')[0].childNodes if len(nodes) == 0: nodes.append(dom.createTextNode(option)) else: nodes[0].data = option nodes = dom.getElementsByTagName('symbol')[0].childNodes user_config = path.join(self.__get_userhome(), '.config', 'ibus-anthy', 'engines.xml') dir = path.dirname(user_config) if not path.exists(dir): os.makedirs(dir, 0o700) # io.open() causes TypeError for unicode. f = codecs.open(user_config, 'w', 'utf-8') dom.writexml(f, '', '', '', 'utf-8') f.close() os.chmod(user_config, 0o600) self.__keymap = None self.__run_message_dialog(_("Anthy keyboard layout is changed. " "Please restart ibus to reload the layout.")) def __update_keymap_label(self): self.__resync_engine_file() prefs = self.__prefs keymap = self.__get_keymap() if keymap == None: return if keymap == '': keymap = 'default' keymap_list = prefs.get_value('common', 'keyboard-layouts') if keymap != None and not keymap in keymap_list: keymap_list.append(keymap) index = -1 if keymap != None: index = keymap_list.index(keymap) model = Gtk.ListStore(str) for k in keymap_list: if k == 'default': k = _("Default") model.append([k]) combobox = self.__builder.get_object('keymap:combobox_custom_table') combobox.set_model(model) combobox.set_active(0) if index >= 0: combobox.set_active(index) combobox.connect_after('changed', self.on_cb_keymap_changed, 0) def __search_and_mark(self, buffer, text, start, end, onetime, forward): if forward: match = start.forward_search(text, 0, end) else: match = start.backward_search(text, 0, end) if match == None: return False match_start, match_end = match if onetime: buffer.place_cursor(match_start) buffer.select_range(match_start, match_end) return True buffer.apply_tag(buffer.tag_found, match_start, match_end) self.__search_and_mark(buffer, text, match_end, end, onetime, forward) return True def __filter_search(self, entry, onetime, forward): text = entry.get_text() self.__filter_timeout_id = 0 text_view = entry.text_view buffer = text_view.get_buffer() start = buffer.get_start_iter() if onetime: bounds = buffer.get_selection_bounds() if len(bounds) != 0: start, end = bounds if forward: start = end end = buffer.get_end_iter() if not forward: end = buffer.get_start_iter() if not onetime: buffer.remove_all_tags(start, end) if text == '': return found = self.__search_and_mark(buffer, text, start, end, onetime, forward) if not found and onetime and forward: end = start start = buffer.get_start_iter() self.__search_and_mark(buffer, text, start, end, onetime, forward) def __do_filter(self, entry): self.__filter_search(entry, False, True) return False def __filter_changed(self, entry): if self.__filter_timeout_id != 0: return self.__filter_timeout_id = GLib.timeout_add(150, self.__do_filter, entry) def __filter_key_release_event(self, entry, event): pressed, keyval = event.get_keyval() if keyval == IBus.KEY_Return: forward = True if event.get_state() & Gdk.ModifierType.SHIFT_MASK: forward = False self.__filter_search(entry, True, forward) text_view = entry.text_view buffer = text_view.get_buffer() text_view.scroll_to_mark(buffer.get_insert(), 0.25, False, 0.0, 0.0) return False def on_selection_changed(self, widget, id): set_sensitive = lambda a, b: self.__builder.get_object(a).set_sensitive(b) flg = True if widget.get_selected()[1] else False for name in [['btn_default', 'btn_edit'], ['es:button_refresh', 'es:button_del']][id]: set_sensitive(name, flg) def on_selection_custom_key_table_changed(self, widget, id): l, i = widget.get_selected() # if 'combobox_custom_key_table' is changed, # 'treeview_custom_key_table' also receives this signal # but no selection. if i == None: return button = self.__builder.get_object('button_remove_custom_key') button.set_sensitive(True) def on_main_quit(self, widget, event): Gtk.main_quit() return True def on_btn_close_clicked(self, widget): Gtk.main_quit() def on_cb_keymap_changed(self, widget, id): it = widget.get_active() model = widget.get_model() keymap = model[it][0] if keymap == _("Default"): keymap = 'default' if self.__keymap == keymap: return self.__keymap = keymap self.__save_keymap() self.__keymap = None def on_cb_custom_key_table_changed(self, widget, user_data): prefs = self.__prefs tv = self.__builder.get_object('treeview_custom_key_table') mode = user_data id = widget.get_active() model = widget.get_model() method = model[id][1] if tv != None: for column in tv.get_columns(): tv.remove_column(column) for child in tv.get_children(): tv.remove(child) if mode == 'romaji': tv = self.__get_romaji_treeview_custom_key_table(method) elif mode == 'kana': prefs.set_value('kana-typing-rule', 'method', method) tv = self.__get_kana_treeview_custom_key_table(method) elif mode == 'thumb': # thumb uses all tables so do not save the method. tv = self.__get_thumb_treeview_custom_key_table(method) def on_btn_edit_clicked(self, widget): ls, it = self.__builder.get_object('shortcut').get_selection().get_selected() m = self.__builder.get_object('es:treeview').get_model() m.clear() for s in s_to_l(ls.get(it, 1)[0]): m.append([s]) self.__builder.get_object('es:entry').set_text('') for w in ['es:checkbutton_ctrl', 'es:checkbutton_alt', 'es:checkbutton_shift']: self.__builder.get_object(w).set_active(False) dlg = self.__builder.get_object('edit_shortcut') dlg.set_transient_for(widget.get_toplevel()) id = dlg.run() dlg.hide() if id == Gtk.ResponseType.OK: new = l_to_s([m[i][0] for i in range(len(m))]) if new != ls.get(it, 1)[0]: group = self.__get_shortcut_group() self.__prefs.set_list_item('shortcut', group, ls.get(it, 0)[0], s_to_l(new)) ls.set(it, 1, new) def on_btn_default_clicked(self, widget): ls, it = self.__builder.get_object('shortcut').get_selection().get_selected() group = self.__get_shortcut_group() shortcuts = self.__prefs.get_default_value('shortcut', group) new = l_to_s(shortcuts[ls.get(it, 0)[0]]) if new != ls.get(it, 1)[0]: self.__prefs.set_list_item('shortcut', group, ls.get(it, 0)[0], s_to_l(new)) ls.set(it, 1, new) def on_btn_romaji_custom_table_clicked(self, widget): self.__run_dialog_custom_key_table(widget, 'romaji') def on_btn_kana_custom_table_clicked(self, widget): self.__run_dialog_custom_key_table(widget, 'kana') def on_btn_thumb_custom_table_clicked(self, widget): self.__run_dialog_custom_key_table(widget, 'thumb') def on_btn_add_custom_key(self, widget, user_data): prefs = self.__prefs input = self.__builder.get_object('entry_input_custom_key') output = self.__builder.get_object('entry_output_custom_key') left = self.__builder.get_object('entry_left_thumb_shift_custom_key') right = self.__builder.get_object('entry_right_thumb_shift_custom_key') model = self.__builder.get_object('treeview_custom_key_table').get_model() combobox = self.__builder.get_object('combobox_custom_key_table') id = combobox.get_active() model_combobox = combobox.get_model() method = model_combobox[id][1] type = user_data section = None key = input.get_text() value = output.get_text() left_text = left.get_text() right_text = right.get_text() if key == None: self.__run_message_dialog(_("Please specify Input Chars")) return elif value == None: self.__run_message_dialog(_("Please specify Output Chars")) return elif type == 'thumb' and left_text == None: self.__run_message_dialog(_("Please specify Left Thumb Shift Chars")) return elif type == 'thumb' and right_text == None: self.__run_message_dialog(_("Please specify Right Thumb Shift Chars")) return if type == 'romaji': section = 'romaji-typing-rule' model.append([type, key, value]) elif type == 'kana': section = 'kana-typing-rule' model.append([type, key, value]) elif type == 'thumb': section = 'thumb-typing-rule' model.append([type, key, value, left_text, right_text]) if section == None: self.__run_message_dialog(_("Your custom key is not assigned in any sections. Maybe a bug.")) return gkey = prefs.typing_to_config_key(key) if gkey == '': return key = gkey if type != 'thumb': prefs.set_list_item(section, 'list', (method, key), value) else: prefs.set_list_item(section, 'list', (method, key), [value, right_text, left_text]) left.set_text('') right.set_text('') input.set_text('') output.set_text('') def on_btn_remove_custom_key(self, widget, user_data): prefs = self.__prefs combobox = self.__builder.get_object('combobox_custom_key_table') id = combobox.get_active() model_combobox = combobox.get_model() method = model_combobox[id][1] tv = user_data l, i = tv.get_selection().get_selected() type = l[i][0] key = l[i][1] section = None if type == 'romaji': section = 'romaji-typing-rule' elif type == 'kana': section = 'kana-typing-rule' elif type == 'thumb': section = 'thumb-typing-rule' if section == None: self.__run_message_dialog(_("Your custom key is not assigned in any sections. Maybe a bug.")) return gkey = prefs.typing_to_config_key(key) if gkey == '': return key = gkey prefs.delete_list_item(section, 'list', (method, key)) l.remove(i) widget.set_sensitive(False) def on_btn_thumb_key_clicked(self, widget): if Gtk.Buildable.get_name(widget) == 'thumb:button_ls': entry = 'thumb:ls' elif Gtk.Buildable.get_name(widget) == 'thumb:button_rs': entry = 'thumb:rs' else: return text = self.__builder.get_object(entry).get_text() tv = self.__builder.get_object('es:treeview') m = tv.get_model() m.clear() if text != None: m.append([text]) i = m.get_iter_first() tv.get_selection().select_iter(i) self.__builder.get_object('es:entry').set_text('') self.__builder.get_object('es:button_add').hide() self.__builder.get_object('es:button_refresh').show() self.__builder.get_object('es:button_del').hide() for w in ['es:checkbutton_ctrl', 'es:checkbutton_alt', 'es:checkbutton_shift']: self.__builder.get_object(w).set_active(False) dlg = self.__builder.get_object('edit_shortcut') dlg.set_transient_for(widget.get_toplevel()) id = dlg.run() dlg.hide() self.__builder.get_object('es:button_add').show() self.__builder.get_object('es:button_refresh').hide() self.__builder.get_object('es:button_del').show() if id == Gtk.ResponseType.OK: l, i = tv.get_selection().get_selected() new = l[i][0] if new != text: section, key = self.__get_section_key(entry) self.__prefs.set_value(section, key, new) self.__builder.get_object(entry).set_text(new) def on_btn_dict_command_clicked(self, widget): if Gtk.Buildable.get_name(widget) == 'dict:btn_edit_dict_command': key = 'dict-admin-command' elif Gtk.Buildable.get_name(widget) == 'dict:btn_add_word_command': key = 'add-word-command' else: return command = self.__prefs.get_value('common', key) if not path.exists(command[0]): self.__run_message_dialog(_("Your file does not exist: ") + command[0], Gtk.MessageType.ERROR) return os.spawnl(os.P_NOWAIT, *command) def on_btn_dict_add_clicked(self, widget): file = None id = None dlg = None if Gtk.Buildable.get_name(widget) == 'dict:btn_add': dlg = Gtk.FileChooserDialog(title=_("Open Dictionary File"), transient_for=widget.get_toplevel(), action=Gtk.FileChooserAction.OPEN) buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL, _("_Open"), Gtk.ResponseType.OK) dlg.add_buttons(*buttons) if Gtk.Buildable.get_name(widget) == 'dict:btn_edit': dlg = Gtk.Dialog(title=_("Edit Dictionary File"), transient_for=widget.get_toplevel()) buttons=(_("_Cancel"), Gtk.ResponseType.CANCEL, _("_OK"), Gtk.ResponseType.OK) dlg.add_buttons(*buttons) assert (dlg != None), 'Button name is undefined.' vbox = self.__builder.get_object('dict:add_extra_vbox') if Gtk.Buildable.get_name(widget) == 'dict:btn_add': # Need to init for the second time self.__init_dict_chooser_dialog() dlg.set_extra_widget(vbox) if Gtk.Buildable.get_name(widget) == 'dict:btn_edit': id = self.__set_selected_dict_to_dialog() if id == None: self.__run_message_dialog(_("Your choosed file is not correct."), Gtk.MessageType.ERROR) return parent_vbox = dlg.vbox parent_vbox.add(vbox) vbox.show_all() if dlg.run() == Gtk.ResponseType.OK: if Gtk.Buildable.get_name(widget) == 'dict:btn_add': file = dlg.get_filename() if file[0] != '/': dir = dlg.get_current_folder() file = dir + '/' + file self.__append_user_dict_from_dialog(file, None, True) elif Gtk.Buildable.get_name(widget) == 'dict:btn_edit': self.__append_user_dict_from_dialog(None, id, False) dlg.hide() vbox.unparent() def on_btn_dict_delete_clicked(self, widget): l, i = self.__builder.get_object('dict:view').get_selection().get_selected() if not i: return selected_id = l.get_value(i, 0) if selected_id == None: return dict_item = self.__prefs.get_value('dict', 'list')[selected_id] if dict_item.is_system: self.__run_message_dialog(_("You cannot delete the system dictionary."), Gtk.MessageType.ERROR) return file = self.__get_dict_file_from_id(selected_id) if file != None: order = self.__prefs.get_value('dict', 'order') order.remove(selected_id) order = self.__prefs.set_value('dict', 'order', order) self.__prefs.delete_list_item('dict', 'files', selected_id) self.__prefs.delete_list_item('dict', 'list', selected_id) l.remove(i) return l.remove(i) def on_btn_dict_view_clicked(self, widget): dict_file = None selected_id = self.__get_selected_dict_id() if selected_id == None: return dict_file = self.__get_dict_file_from_id(selected_id) if dict_file == None: self.__run_message_dialog(_("Your file is not good."), Gtk.MessageType.ERROR) return if not path.exists(dict_file[0]): self.__run_message_dialog(_("Your file does not exist: ") + dict_file[0], Gtk.MessageType.ERROR) return # The selected id is already quoted. dicts = self.__prefs.get_value('dict', 'list') dict_item = dicts[selected_id] nline = dict_item.preview_lines encoding = dict_item.encoding lines = ''; for i, line in enumerate(list(codecs.open(dict_file[0], 'r', 'utf-8'))): if nline >= 0 and i >= nline: break; lines = lines + line if encoding != None and encoding != 'utf-8': lines = str(lines, encoding) dlg = Gtk.Dialog(title=_("View Dictionary File"), transient_for=widget.get_toplevel()) buttons=(_("_OK"), Gtk.ResponseType.OK) dlg.add_buttons(*buttons) buffer = Gtk.TextBuffer() buffer.set_text (lines) buffer.tag_found = buffer.create_tag('found', background = 'yellow') text_view = Gtk.TextView.new_with_buffer(buffer) text_view.set_editable(False) sw = Gtk.ScrolledWindow() sw.add(text_view) sw.set_min_content_height(400) parent_vbox = dlg.vbox parent_vbox.add(sw) sw.show_all() dlg.set_default_size(500, 500) self.__filter_timeout_id = 0 if hasattr(Gtk, 'SearchEntry') and \ hasattr(Gtk, 'SearchEntryClass') and \ hasattr(Gtk.SearchEntryClass, 'search_changed'): filter_entry = Gtk.SearchEntry(hexpand = True, margin_left = 6, margin_right = 6, margin_top = 6, margin_bottom = 6) filter_entry.text_view = text_view filter_entry.connect('search-changed', self.__filter_changed) filter_entry.connect('key-release-event', self.__filter_key_release_event) parent_vbox.add(filter_entry) filter_entry.show_all() sw.show_all() dlg.run() dlg.destroy() def on_btn_dict_order_clicked(self, widget): l, it = self.__builder.get_object('dict:view').get_selection().get_selected() if not it: return selected_path = l.get_path(it) selected_id = l.get_value(it, 0) index = selected_path.get_indices()[0] if Gtk.Buildable.get_name(widget) == 'dict:btn_up': if index <= 0: return next_path = (index - 1, ) elif Gtk.Buildable.get_name(widget) == 'dict:btn_down': if index + 1 >= len(l): return next_path = (index + 1, ) next_it = l.get_iter(next_path) if next_it: l.swap(it, next_it) order = self.__prefs.get_value('dict', 'order') if len(order) == 0: order = list(self.__prefs.get_value('dict', 'files').keys()) i = order.index(selected_id) if Gtk.Buildable.get_name(widget) == 'dict:btn_up': if i <= 0: return next_i = i - 1 elif Gtk.Buildable.get_name(widget) == 'dict:btn_down': if i + 1 >= len(order): return next_i = i + 1 f = order[i] order[i] = order[next_i] order[next_i] = f self.__prefs.set_value('dict', 'order', order) def on_shortcut_type_changed(self, widget): ls = self.__builder.get_object('shortcut').get_model() ls.clear() group = self.__get_shortcut_group() shortcuts = self.__prefs.get_value('shortcut', group) for k in shortcuts.keys(): ls.append([k, l_to_s(shortcuts[k])]) section, key = self.__get_section_key(Gtk.Buildable.get_name(widget)) self.__prefs.set_value(section, key, group) def on_shortcut_key_release_event(self, widget, event): if event.hardware_keycode in [36, 65]: self.on_btn_edit_clicked(widget) def on_shortcut_click_event(self, widget, event): if event.type == Gdk.EventType._2BUTTON_PRESS: widget.dc = True elif event.type == Gdk.EventType.BUTTON_RELEASE: if hasattr(widget, 'dc') and widget.dc: self.on_btn_edit_clicked(widget) widget.dc = False def on_key_input_dialog_key_press_event(self, widget, event): widget.e = (event.keyval, event.get_state()) return True def on_key_input_dialog_key_release_event(self, widget, event): widget.response(Gtk.ResponseType.OK) return True def on_entry_custom_key_changed(self, widget, user_data): mode = user_data input = self.__builder.get_object('entry_input_custom_key') output = self.__builder.get_object('entry_output_custom_key') left = self.__builder.get_object('entry_left_thumb_shift_custom_key') right = self.__builder.get_object('entry_right_thumb_shift_custom_key') button = self.__builder.get_object('button_add_custom_key') if mode != 'thumb': if input.get_text() != '' and output.get_text() != '': button.set_sensitive(True) else: button.set_sensitive(False) else: if input.get_text() != '' and output.get_text() != '' and \ left.get_text() != '' and right.get_text() != '': button.set_sensitive(True) else: button.set_sensitive(False) def on_entry_dict_command_changed(self, widget): if not widget.get_text(): return list = widget.get_text().split() if len(list) == 0: return elif list[0][0] == '/': if len(list) == 1: list.append(list[0][list[0].rfind('/') + 1:]) else: list.insert(1, list[0][list[0].rfind('/') + 1:]) else: if len(list) == 1: list[0] = '/usr/bin/' + list[0] else: list.insert(0, '/usr/bin/' + list[0]) list[1] = list[1][list[1].rfind('/') + 1:] if Gtk.Buildable.get_name(widget) == 'dict:entry-edit-dict-command': key = 'dict-admin-command' elif Gtk.Buildable.get_name(widget) == 'dict:entry-add-word-command': key = 'add-word-command' else: return self.__prefs.set_value('common', key, list) def on_es_entry_changed(self, widget): if not widget.get_text(): self.__builder.get_object('es:button_add').set_sensitive(False) else: self.__builder.get_object('es:button_add').set_sensitive(True) def on_es_button_run_input_clicked(self, widget): dlg = self.__builder.get_object('key_input_dialog') dlg.set_transient_for(widget.get_toplevel()) dlg.set_markup('%s' % _("Please press a key (or a key combination)")) dlg.format_secondary_text(_("The dialog will be closed when the key is released")) id = dlg.run() dlg.hide() if id == Gtk.ResponseType.OK: key, state = dlg.e if (state & (IBus.ModifierType.CONTROL_MASK | IBus.ModifierType.MOD1_MASK) and ord('a') <= key <= ord('z')): key = ord(chr(key).upper()) self.__builder.get_object('es:entry').set_text(IBus.keyval_name(key)) for w, i in [('es:checkbutton_ctrl', IBus.ModifierType.CONTROL_MASK), ('es:checkbutton_alt', IBus.ModifierType.MOD1_MASK), ('es:checkbutton_shift', IBus.ModifierType.SHIFT_MASK)]: self.__builder.get_object(w).set_active(True if state & i else False) def on_es_button_add_clicked(self, widget): s = self.__builder.get_object('es:entry').get_text() if not s or not IBus.keyval_from_name(s): dlg = self.__builder.get_object('invalid_keysym') dlg.set_transient_for(widget.get_toplevel()) dlg.set_markup('%s' % _("Invalid keysym")) dlg.format_secondary_text(_("This keysym is not valid")) dlg.run() dlg.hide() return True for w, m in [('es:checkbutton_ctrl', 'Ctrl+'), ('es:checkbutton_alt', 'Alt+'), ('es:checkbutton_shift', 'Shift+')]: if self.__builder.get_object(w).get_active(): s = m + s l = self.__builder.get_object('es:treeview').get_model() for i in range(len(l)): if l[i][0] == s: return True l.append([s]) def on_es_button_refresh_clicked(self, widget): s = self.__builder.get_object('es:entry').get_text() if not s or not IBus.keyval_from_name(s): dlg = self.__builder.get_object('invalid_keysym') dlg.set_transient_for(widget.get_toplevel()) dlg.set_markup('%s' % _("Invalid keysym")) dlg.format_secondary_text(_("This keysym is not valid")) dlg.run() dlg.hide() return True for w, m in [('es:checkbutton_ctrl', 'Ctrl+'), ('es:checkbutton_alt', 'Alt+'), ('es:checkbutton_shift', 'Shift+')]: if self.__builder.get_object(w).get_active(): s = m + s tv = self.__builder.get_object('es:treeview') l, i = tv.get_selection().get_selected() l[i][0] = s return True def on_es_button_del_clicked(self, widget): tv = self.__builder.get_object('es:treeview') l, i = tv.get_selection().get_selected() if i: l.remove(i) def run(self): Gtk.main() if __name__ == '__main__': AnthySetup().run() ibus-anthy-1.5.17/setup/python3/prefs.py000066400000000000000000000315571475510605700201520ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2009 Hideaki ABE # Copyright (c) 2010-2017 Takao Fujiwara # Copyright (c) 2007-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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys from gi import require_version as gi_require_version gi_require_version('Gio', '2.0') gi_require_version('GLib', '2.0') gi_require_version('IBus', '1.0') from gi.repository import Gio from gi.repository import GLib from gi.repository import GObject from gi.repository import IBus class DictItem(): def __init__(self, id='', short_label='', long_label='', icon='', is_system=False, preview_lines=-1, embed=False, single=True, reverse=False, encoding='utf-8'): self.id = id self.short_label = short_label self.long_label = long_label self.icon = icon self.is_system = is_system self.preview_lines = preview_lines self.embed = embed self.single = single self.reverse = reverse self.encoding = encoding def __str__(self): retval = ('id:', self.id, 'short-label:', self.short_label, 'long-label:', self.long_label, 'icon:', self.icon, 'is-system:', self.is_system, 'preview-lines:', self.preview_lines, 'embed:', self.embed, 'single:', self.single, 'reverse:', self.reverse, 'encoding:', self.encoding) return str(retval) @classmethod def serialize(cls, dict_item): builder = GLib.VariantBuilder(GLib.VariantType('r')) builder.add_value(GLib.Variant.new_string(dict_item.id)) builder.add_value(GLib.Variant.new_string(dict_item.short_label)) builder.add_value(GLib.Variant.new_string(dict_item.long_label)) builder.add_value(GLib.Variant.new_string(dict_item.icon)) builder.add_value(GLib.Variant.new_boolean(dict_item.is_system)) builder.add_value(GLib.Variant.new_int32(dict_item.preview_lines)) builder.add_value(GLib.Variant.new_boolean(dict_item.embed)) builder.add_value(GLib.Variant.new_boolean(dict_item.single)) builder.add_value(GLib.Variant.new_boolean(dict_item.reverse)) builder.add_value(GLib.Variant.new_string(dict_item.encoding)) return builder.end() class Prefs(GObject.GObject): __gsignals__ = { 'changed' : ( GObject.SignalFlags.RUN_FIRST, None, (str, str, GLib.Variant)), } def __init__(self): super(Prefs, self).__init__() self.__cache = {} self.__settings = {} self.__schema_prefix = 'org.freedesktop.ibus.engine.anthy.' self.__schema_sections = ['common', 'shortcut', 'romaji-typing-rule', 'kana-typing-rule', 'thumb-typing-rule', 'thumb', 'dict'] for section in self.__schema_sections: self.__settings[section] = Gio.Settings( schema=self.__schema_prefix + section) self.__settings[section].connect('changed', self.__settings_on_changed) def __settings_on_changed(self, settings, key): section = settings.props.schema[len(self.__schema_prefix):] variant_value = self.__settings[section].get_value(key) variant_key = self.__cache.get(section) if variant_key == None: variant_key = {} variant_key[key] = variant_value self.__cache[section] = variant_key self.emit('changed', section, key, variant_value) def variant_to_value(self, variant): if type(variant) != GLib.Variant: return variant type_string = variant.get_type_string() if type_string == 's': return variant.get_string() elif type_string == 'i': return variant.get_int32() elif type_string == 'b': return variant.get_boolean() elif type_string == 'v': return variant.unpack() elif len(type_string) > 0 and type_string[0] == 'a': # Use unpack() instead of dup_strv() in python. # In the latest pygobject3 3.3.4 or later, g_variant_dup_strv # returns the allocated strv but in the previous release, # it returned the tuple of (strv, length) return variant.unpack() else: self.printerr('Unknown variant type: %s' % type_string) sys.abrt() return variant def variant_from_value(self, value): variant = None if type(value) == str: variant = GLib.Variant.new_string(value) elif type(value) == int: variant = GLib.Variant.new_int32(value) elif type(value) == bool: variant = GLib.Variant.new_boolean(value) elif type(value) == list: variant = GLib.Variant.new_strv(value) if variant == None: self.printerr('Unknown value type: %s' % type(value)) return variant def get_variant(self, section, key): variant_key = self.__cache.get(section) if variant_key != None: variant_value = variant_key.get(key) if variant_value != None: return variant_value variant_value = self.__settings[section].get_value(key) if variant_key == None: variant_key = {} variant_key[key] = variant_value self.__cache[section] = variant_key return variant_value def get_default_variant(self, section, key): return self.__settings[section].get_default_value(key) def get_readable_value(self, section, key, variant): value = self.variant_to_value(variant) if section == 'dict' and key == 'list': dicts = {} for item in value: dict_item = DictItem(*item) dicts[dict_item.id] = dict_item value = dicts if section == 'dict' and key == 'template': value = DictItem(*value) return value def get_value(self, section, key): variant = self.get_variant(section, key) return self.get_readable_value(section, key, variant) def get_default_value(self, section, key): variant = self.get_default_variant(section, key) return self.get_readable_value(section, key, variant) def set_variant(self, section, key, variant): self.__settings[section].set_value(key, variant) self.__settings[section].apply() def set_value(self, section, key, value): variant = self.variant_from_value(value) if variant == None: return self.set_variant(section, key, variant) def set_list_item(self, section, key, item, values): variant = self.get_variant(section, key) if variant == None: printerrr('%s:%s does not exist' % (section, key)) return if section == 'shortcut': variant_dict = GLib.VariantDict(variant) array = [] for value in values: array.append(GLib.Variant.new_string(value)) varray = GLib.Variant.new_array(GLib.VariantType('s'), array) variant_dict.insert_value(item, varray) # GVariantDict uses GHashTable internally and # GVariantDict.end() does not support the order. self.set_variant(section, key, variant_dict.end()) return if section == 'romaji-typing-rule' or \ section == 'kana-typing-rule' or \ section == 'thumb-typing-rule': (method, keymap_key) = item variant_dict = GLib.VariantDict(variant) keymap = variant_dict.lookup_value(method, None) keymap_dict = GLib.VariantDict(keymap) if section == 'thumb-typing-rule': array = [] for value in values: array.append(GLib.Variant.new_string(value)) vvalue = GLib.Variant.new_array(GLib.VariantType('s'), array) else: vvalue = GLib.Variant.new_string(values) keymap_dict.insert_value(keymap_key, vvalue) keymap = keymap_dict.end() variant_dict.insert_value(method, keymap) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'files': variant_dict = GLib.VariantDict(variant) array = [] for value in values: array.append(GLib.Variant.new_string(value)) varray = GLib.Variant.new_array(GLib.VariantType('s'), array) variant_dict.insert_value(item, varray) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'list': array = [] has_item = False for v in variant: dict_item = DictItem(*v) if dict_item.id == values.id: array.append(GLib.Variant.new_variant( DictItem.serialize(values))) has_item = True else: array.append(GLib.Variant.new_variant( DictItem.serialize(dict_item))) if not has_item: array.append(GLib.Variant.new_variant(DictItem.serialize(values))) varray = GLib.Variant.new_array(GLib.VariantType('v'), array) self.set_variant(section, key, varray) return def delete_list_item(self, section, key, item): variant = self.get_variant(section, key) if variant == None: printerrr('%s:%s does not exist' % (section, key)) return if section == 'romaji-typing-rule' or \ section == 'kana-typing-rule' or \ section == 'thumb-typing-rule': (method, keymap_key) = item variant_dict = GLib.VariantDict(variant) keymap = variant_dict.lookup_value(method, None) keymap_dict = GLib.VariantDict(keymap) keymap_dict.remove(keymap_key) keymap = keymap_dict.end() variant_dict.insert_value(method, keymap) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'files': variant_dict = GLib.VariantDict(variant) variant_dict.remove(item) self.set_variant(section, key, variant_dict.end()) return if section == 'dict' and key == 'list': array = [] for v in variant: dict_item = DictItem(*v) if dict_item.id == item: continue else: array.append(GLib.Variant.new_variant( DictItem.serialize(dict_item))) varray = GLib.Variant.new_array(GLib.VariantType('v'), array) self.set_variant(section, key, varray) return def bind(self, section, key, object, property, flags): self.__settings[section].bind(key, object, property, flags) # Convert DBus.String to str # sys.getdefaultencoding() == 'utf-8' with pygtk2 but # sys.getdefaultencoding() == 'ascii' with gi gtk3 # so the simple str(unicode_string) causes an error and need to use # unicode_string.encode('utf-8') instead. def str(self, uni): if uni == None: return None if type(uni) == str: return uni return str(uni) # The simple unicode(string) causes an error and need to use # unicode(string, 'utf-8') instead. def unicode(self, string): if string == None: return None return string # If the parent process exited, the std io/out/error will be lost. @staticmethod def printerr(sentence): try: print(sentence, file=sys.stderr) except IOError: pass ibus-anthy-1.5.17/setup/python3/setup.ui000066400000000000000000004243441475510605700201600ustar00rootroot00000000000000 10 1 0 1 0 10 Hiragana Katakana Halfwidth Katakana Latin Wide Latin NICOLA-J NICOLA-A NICOLA-F None FMV KB231 key extension FMV KB611 key extension Romaji Kana Thumb shift Multiple segment Single segment Immediate conversion (multiple segment) Immediate conversion (single segment) Keep numpad codes Convert characters 「」/ 「」・ []/ []・ 、。 ,. Do nothing Automatically convert Automatically commit Clear Commit Hold Default ATOK Wnn False Setup - IBus-Anthy dialog True vertical True True 6 True vertical 8 True 0 none True 3 2 8 4 8 8 12 True 0 _Input Mode: True input-mode GTK_FILL True model1 0 1 2 True 0 _Typing Method: True typing-method 1 2 GTK_FILL True model2 0 1 2 1 2 True 0 Conversion _Mode: True conversion-segment-mode 2 3 GTK_FILL True model3 0 1 2 2 3 True <b>Initial Setting</b> True False False 0 True 0 none True vertical 4 4 8 8 12 True True 200 automatic automatic in True True 0 True <b>Menu Visibility on Status Icon</b> True False False 1 True General vbox1 False True vertical 8 True 0 none True 5 2 8 4 8 8 12 True 0 _Period Style: True period-style GTK_FILL True 0 Symbo_l Style: True symbol-style 1 2 GTK_FILL True 0 Numpad _Key Type: True ten-key-mode 2 3 GTK_FILL True model4 0 1 2 2 3 True model5 0 1 2 1 2 True model6 0 1 2 True 0 _Behavior on Period: True behavior-on-period 3 4 GTK_FILL True 0 Behavior on _Focus Out: True behavior-on-focus-out 4 5 GTK_FILL True model7 0 1 2 3 4 True model8 0 1 2 4 5 True <b>Behavior</b> True False False 0 True 0 none True 4 8 4 8 8 12 True horizontal 8 True 0 Candidate _Window Page Size: True page-size False False 0 True True adjustment1 0.97999999999999998 False False 1 Convert _symbols with the one column width True True False True True 1 2 Convert _numbers with the one column width True True False True True 2 3 Con_vert spaces with the one column width True True False True True 3 4 Swi_tch “Hiragana” and “Latin” with Shift key and Hiragana–Katakana key in preedit True True False True True 4 5 True <b>Other</b> True False False 1 True Conversion vbox2 1 False True vertical 4 4 True horizontal 8 True _Shortcut Type: True word-char shortcut-type False False 1 0 True model9 0 False False 1 False False 0 True True automatic automatic in 300 True True 1 True horizontal 4 end De_fault True True True True False False False 0 _Edit True True True True False False False 1 False False 2 True Key Binding vbox3 2 False True 8 4 vertical True 0 none True 4 4 vertical 8 12 True 2 2 8 4 True _Romaji Key Table: True romaji:button_custom_table GTK_FILL GTK_FILL ... True True True False True 1 2 GTK_FILL GTK_FILL False False 0 True <b>Romaji</b> True False True 0 True 0 none True 4 4 vertical 8 12 True 2 2 8 4 True _Kana Key Table: True kana:button_custom_table GTK_FILL GTK_FILL ... True True True False True 1 2 GTK_FILL GTK_FILL False False 0 True <b>Kana</b> True False True 1 True 0 none True 4 4 vertical 8 12 True 2 2 8 4 True Keyboad _layout: True keymap:combobox_custom_table GTK_FILL GTK_FILL True True 0 1 2 GTK_FILL GTK_FILL False False 0 True <b>Keyboard layout</b> True False True 2 True Typing Method vbox4 3 False True 8 4 vertical True 0 none True 4 4 vertical 8 8 12 True 2 3 8 4 True 0 True _Left Thumb Shift Key: thumb:ls GTK_FILL True True False GTK_FILL 1 2 ... True True False GTK_FILL GTK_FILL 2 3 True 0 True Right _Thumb Shift Key: thumb:rs GTK_FILL 1 2 True True False GTK_FILL 1 2 1 2 ... True True False GTK_FILL GTK_FILL 2 3 1 2 False True 0 Adjust _input method layout to system keyboard layout Adjust IM layout to XKB layout True True False True True False False 1 True horizontal 8 True 0 True Input _Method Layout: thumb:keyboard-layout False False 0 True model51 0 1 False False 2 True horizontal 8 True dialog-information False False 0 True 0 True Restart IBus when you change the keyboard layout Restart IBus when you change XKB False False 1 False False 3 True horizontal 8 True 0 True _Additional Key Arrangement: thumb:fmv-extension False False 0 True '~', '『', '¢', '£' and so on can be output with Thumb Shift key model11 0 1 False False 4 True horizontal 8 True dialog-information False False 0 True 0 True 74 You do not have to reconfigure the system keyboard layout for "Additional Key Arrangement" since this option changes input method layout only in case input method is turned on. You do not have to reconfigure XKB since this option changes IM layout only with IM on. False False 1 False False 5 _Enable semi-voiced sound mark with Shift key Seion + Shift can output Handakuon True True False True True False False 6 True 2 2 8 4 True Thumb _Shift Key Table: True thumb:button_custom_table GTK_FILL GTK_FILL ... True True True False True 1 2 GTK_FILL GTK_FILL False True 7 True <b>Thumb Shift Layout</b> True False 0 True Thumb Shift vbox5 4 False True vertical 8 4 True 0 none True vertical 4 4 8 8 12 True 2 3 8 4 True _Edit Dictionary Command: True dict:entry-edit-dict-command GTK_FILL GTK_FILL True True True GTK_FILL 1 2 ... True True True False True GTK_FILL GTK_FILL 2 3 True _Add Word Command: True dict:entry-add-word-command GTK_FILL GTK_FILL 1 2 True True True GTK_FILL 1 2 1 2 ... True True True False True GTK_FILL GTK_FILL 2 3 1 2 False True 0 True <b>Default Dictionary Configuration</b> True False 0 True 0 none True vertical 4 4 8 8 12 True True 220 automatic automatic in True True 0 True horizontal 4 end _View True True True False True False False 0 _Add True True True True False False False 1 _Edit True True True True False False False 2 _Delete True True True True False False False 3 False False 1 True horizontal 4 end _Up True You can change the order on language bar True True True False False False 0 _Down True You can change the order on language bar True True True False False False 1 False False 2 True <b>Extended Dictionaries</b> True False 1 True Dictionary vbox6 5 False True vertical 10 6 True False True About about_vbox 6 False 2 True horizontal end _Close True True True True False False False 0 False end 0 btn_close 340 300 Edit Shortcut True dialog True vertical True vertical 5 6 True True 1 automatic automatic in 150 True True False 0 True horizontal 8 True Key Code: False False 0 True True 1 ... True True False True False False 2 False False 1 True horizontal 8 True Modifier: False False 0 True horizontal A_lternate True True False True True 0 Co_ntrol True True False True True 1 _Shift True True False True True 2 1 False False 2 True horizontal 6 end _Add True True False True True False False False 0 _Refresh True False True True False False False 1 _Delete True True False True True False False False 2 False False 3 2 True horizontal end _Cancel True True True True False False False 0 _OK True True True True False False False 1 False end 0 cancelbutton101 okbutton101 400 470 True dialog True vertical 5 6 True horizontal 5 6 True 0 True combobox_custom_key_table False False 0 True False False 1 False False 0 True horizontal 5 6 True True 1 automatic automatic in 250 300 True True 0 True vertical start 6 True _Input Characters True entry_input_custom_key 0 True 3 1 True _Output Characters True entry_output_custom_key 2 True 3 3 False _Left Thumb Shift True entry_left_thumb_shift_custom_key 4 False 3 5 False _Right Thumb Shift True entry_right_thumb_shift_custom_key 6 False 3 7 True _Add True True True True False 8 True _Remove True True True True False 9 False False 1 1 True horizontal end True _Close True True True True False False 0 False end 0 closebutton301 5 False True center-on-parent dialog True question yes-no Confirmation You are about to close the setup dialog, is that OK? True vertical 2 True horizontal end False end 0 5 False True center-on-parent dialog True warning yes-no Notice! You are about to close the setup dialog without saving your changes, is that OK? True vertical 2 True horizontal end False end 0 5 False True center-on-parent dialog True cancel Please press a key (or a key combination) The dialog will be closed when the key is released True vertical 2 True horizontal end False end 0 5 False True center-on-parent dialog True warning ok Invalid keysym This keysym is not valid True vertical 2 True horizontal end False end 0 True vertical True 10 True 2 2 8 4 True _Short Label: True dict:short_entry GTK_FILL True True True 1 1 2 True _Description: True dict:long_entry 1 2 GTK_FILL True True True 1 2 1 2 False False _Use your dictionary alone with switching dictionaries True True False True True True False False 1 _Embed your dictionary in the system dictionary True True False True True False False 2 Enable the _reverse conversion False True False True True False False 3 IBus-Anthy Copyright © 2007–2008 Peng Huang Copyright © 2009 Hideaki ABE Copyright © 2009–2018 Takao Fujiwara Copyright © 2007–2018 Red Hat, Inc. The Anthy engine for the IBus input platform GPL https://github.com/ibus/ibus/wiki Takao Fujiwara <takao.fujiwara1@gmail.com> translator_credits True ibus-anthy-1.5.17/tests/000077500000000000000000000000001475510605700150445ustar00rootroot00000000000000ibus-anthy-1.5.17/tests/Makefile.am000066400000000000000000000033101475510605700170750ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2017-2021 Takao Fujiwara # Copyright (c) 2017-2019 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. CLEANFILES = check: bash -x $(srcdir)/test-build.sh --builddir=$(builddir) --srcdir=$(srcdir) if ENABLE_INSTALLED_TESTS test_execsdir = $(libexecdir)/installed-tests/ibus-anthy test_execs = anthytest test_execs_SCRIPTS = \ anthycases.py \ anthytest.py \ $(NULL) test_metas_in = meta.test.in test_metas = $(addsuffix .test, $(test_execs)) test_sources_DATA = \ $(test_metas) \ $(NULL) test_sourcesdir = $(datadir)/installed-tests/ibus-anthy CLEANFILES += \ $(test_metas) \ $(NULL) endif $(test_metas): $(test_metas_in) f=`echo $@ | sed -e 's/\.test//'`; \ TEST_EXEC=$(test_execsdir)/$${f}.py; \ sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(test_metas_in) > $@.tmp; \ mv $@.tmp $@; \ $(NULL) EXTRA_DIST = \ anthycases.py \ anthytest.py \ meta.test.in \ test-build.sh \ test-console.sh \ $(NULL) ibus-anthy-1.5.17/tests/anthycases.py000077500000000000000000000052241475510605700175660ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- # 'init' has one array which is [keysym, keycode, modifier] and to be run # before the main tests. E.g. # Ctrl-space to enable Hiragana mode # # 'tests' cases are the main test cases. # 'preedit' case runs to create a preedit text. # 'commit' case runs to commit the preedit text. # 'result' case is the expected output. # 'preedit' and 'commit' can choose the type of either 'string' or 'keys' # 'string' type is a string sequence which does not need modifiers from gi import require_version as gi_require_version gi_require_version('IBus', '1.0') from gi.repository import IBus TestCases = { #'init': [ord(' '), 0, IBus.ModifierType.CONTROL_MASK] 'init': [IBus.KEY_j, 0, IBus.ModifierType.CONTROL_MASK], 'tests': [ { 'preedit': { 'string': 'watashinonamaeha,pendesu.' }, 'conversion': { 'string': ' ' }, 'commit': { 'keys': [[IBus.KEY_Return, 0, 0]] }, 'result': { 'string': '私の名前は、ペンです。' } }, { 'preedit': { 'string': 'toukyou' }, 'conversion': { 'string': ' ' }, 'commit': { 'keys': [[IBus.KEY_Return, 0, 0]] }, 'result': { 'string': '東京' } }, { 'preedit': { 'string': 'toukyo' }, 'conversion': { 'keys': [[IBus.KEY_Tab, 0, 0], [IBus.KEY_Tab, 0, 0], ] }, 'commit': { 'keys': [[IBus.KEY_Return, 0, 0]] }, 'result': { 'string': '東京' } }, { 'preedit': { 'string': 'myuutu-' }, 'conversion': { 'keys': [[IBus.KEY_F7, 0, IBus.ModifierType.SHIFT_MASK]] }, 'commit': { 'keys': [[IBus.KEY_Return, 0, 0]] }, 'result': { 'string': 'ミュウツー' } }, { 'preedit': { 'string': 'myuutu-' }, 'conversion': { 'keys': [[IBus.KEY_space, 0, 0], [IBus.KEY_Right, 0, IBus.ModifierType.SHIFT_MASK], [IBus.KEY_Right, 0, IBus.ModifierType.SHIFT_MASK], [IBus.KEY_Right, 0, IBus.ModifierType.SHIFT_MASK], [IBus.KEY_F7, 0, 0] ] }, 'commit': { 'keys': [[IBus.KEY_Return, 0, 0]] }, 'result': { 'string': 'ミュウツー' } }, ] } ibus-anthy-1.5.17/tests/anthytest.py000077500000000000000000000513361475510605700174540ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- from __future__ import print_function from gi import require_versions as gi_require_versions gi_require_versions({'GLib': '2.0', 'Gio': '2.0', 'GObject': '2.0', 'IBus': '1.0'}) from gi.repository import GLib from gi.repository import Gio from gi.repository import GObject from gi.repository import IBus try: gi_require_versions({'Gdk': '4.0', 'Gtk': '4.0'}) except ValueError: gi_require_versions({'Gdk': '3.0', 'Gtk': '3.0'}) from gi.repository import Gdk from gi.repository import Gtk import argparse import getopt import os import sys import subprocess import unittest TAP_MODULE_NONE, \ TAP_MODULE_TAPPY, \ TAP_MODULE_PYCOTAP = list(range(3)) tap_module = TAP_MODULE_NONE # Need to flush the output against Gtk.main() def printflush(sentence): try: print(sentence, flush=True) except IOError: pass def printerr(sentence): try: print(sentence, flush=True, file=sys.stderr) except IOError: pass try: from tap import TAPTestRunner tap_module = TAP_MODULE_TAPPY printflush('## Load tappy') except ModuleNotFoundError: try: from pycotap import TAPTestRunner from pycotap import LogMode tap_module = TAP_MODULE_PYCOTAP printflush('## Load pycotap') except ModuleNotFoundError as err: printflush('## Ignore tap module: %s' % str(err)) PY3K = sys.version_info >= (3, 0) DONE_EXIT = True if 'IBUS_ANTHY_ENGINE_PATH' in os.environ: engine_path = os.environ['IBUS_ANTHY_ENGINE_PATH'] if engine_path != None and engine_path != '': sys.path.append(engine_path) if 'IBUS_ANTHY_SETUP_PATH' in os.environ: setup_path = os.environ['IBUS_ANTHY_SETUP_PATH'] if setup_path != None and setup_path != '': sys.path.append(setup_path) sys.path.append('/usr/share/ibus-anthy/engine') from anthycases import TestCases @unittest.skipIf(Gdk.Display.get_default() == None, 'Display cannot be open.') class AnthyTest(unittest.TestCase): global DONE_EXIT ENGINE_PATH = '/com/redhat/IBus/engines/Anthy/Test/Engine' @classmethod def setUpClass(cls): IBus.init() def setUp(self): self.__id = 0 self.__engine_is_focused = False self.__idle_count = 0 self.__idle_loop = None self.__test_index = 0 self.__preedit_changes = 0 self.__preedit_prev = None self.__conversion_index = 0 self.__conversion_spaces = 0 self.__commit_done = False self.__engine = None self.__list_toplevel = False self.__is_wayland = False display = Gdk.Display.get_default() if GObject.type_name(display.__gtype__) == 'GdkWaylandDisplay': self.__is_wayland = True def register_ibus_engine(self): printflush('## Registering engine') self.__bus = IBus.Bus() if not self.__bus.is_connected(): self.fail('ibus-daemon is not running') return False; self.__bus.get_connection().signal_subscribe('org.freedesktop.DBus', 'org.freedesktop.DBus', 'NameOwnerChanged', '/org/freedesktop/DBus', None, 0, self.__name_owner_changed_cb, self.__bus) #self.__factory = factory.EngineFactory(self.__bus) self.__factory = IBus.Factory( object_path=IBus.PATH_FACTORY, connection=self.__bus.get_connection()) self.__factory.connect('create-engine', self.__create_engine_cb) #command_line = '/usr/libexec/ibus-engine-anthy' self.__component = IBus.Component(name='org.freedesktop.IBus.Anthy.Test', description='Test Anthy Component', version='0.0.1', license='GPL', author='Takao Fujiwara ', homepage='https://github.com/ibus/ibus/wiki', command_line='', textdomain='ibus-anthy') if PY3K: symbol = chr(0x3042) else: symbol = unichr(0x3042) desc = IBus.EngineDesc(name='testanthy', longname='TestAnthy', description='Test Anthy Input Method', language='ja', license='GPL', author='Takao Fujiwara ', icon='ibus-anthy', symbol=symbol, ) self.__component.add_engine(desc) self.__bus.register_component(self.__component) self.__bus.request_name('org.freedesktop.IBus.Anthy.Test', 0) return True def create_window(self): match Gtk.MAJOR_VERSION: case 4: self.create_window_gtk4() case 3: self.create_window_gtk3() case _: self.gtk_version_exception() def create_window_gtk4(self): window = Gtk.Window() self.__entry = entry = Gtk.Entry() window.connect('destroy', self.__window_destroy_cb) entry.connect('map', self.__entry_map_cb) controller = Gtk.EventControllerFocus() controller.set_propagation_phase(Gtk.PropagationPhase.BUBBLE) controller.connect_after('enter', self.__controller_enter_cb) text = entry.get_delegate() text.add_controller(controller) text.connect('preedit-changed', self.__entry_preedit_changed_cb) buffer = entry.get_buffer() buffer.connect('inserted-text', self.__buffer_inserted_text_cb) window.set_child(entry) window.set_focus(entry) window.present() printflush('## Build GTK4 window') def create_window_gtk3(self): window = Gtk.Window(type = Gtk.WindowType.TOPLEVEL) self.__entry = entry = Gtk.Entry() window.connect('destroy', self.__window_destroy_cb) entry.connect('map', self.__entry_map_cb) entry.connect('focus-in-event', self.__entry_focus_in_event_cb) entry.connect('preedit-changed', self.__entry_preedit_changed_cb) buffer = entry.get_buffer() buffer.connect('inserted-text', self.__buffer_inserted_text_cb) window.add(entry) window.show_all() printflush('## Build GTK3 window') def gtk_version_exception(self): raise Exception("GTK version %d is not supported" % Gtk.MAJOR_VERSION) def is_integrated_desktop(self): session_name = None if 'XDG_SESSION_DESKTOP' in os.environ: session_name = os.environ['XDG_SESSION_DESKTOP'] if session_name == None: return False if len(session_name) >= 4 and session_name[0:5] == 'gnome': return True return False def __name_owner_changed_cb(self, connection, sender_name, object_path, interface_name, signal_name, parameters, user_data): if signal_name == 'NameOwnerChanged': try: import engine except ModuleNotFoundError as e: with self.subTest(i = 'name-owner-changed'): self.fail('NG: Not installed ibus-anthy %s' % str(e)) self.__window_destroy_cb() return engine.Engine.CONFIG_RELOADED() def __create_engine_cb(self, factory, engine_name): if engine_name == 'testanthy': printflush('## Creating engine') try: import engine except ModuleNotFoundError as e: with self.subTest(i = 'create-engine'): self.fail('NG: Not installed ibus-anthy %s' % str(e)) self.__window_destroy_cb() return self.__id += 1 self.__engine = engine.Engine(self.__bus, '%s/%d' % (self.ENGINE_PATH, self.__id)) if hasattr(self.__engine.props, 'has_focus_id'): self.__engine.connect('focus-in-id', self.__engine_focus_in) self.__engine.connect('focus-out-id', self.__engine_focus_out) # The timing of D-Bus signal of Engine.has_focus_id can cause # some 'focus-in' signals earlier and 'focus-in-id' signals later. self.__engine.connect('focus-in', self.__engine_focus_in) self.__engine.connect('focus-out', self.__engine_focus_out) return self.__engine def __engine_focus_in(self, engine, object_path=None, client=None): printflush('## Focus in engine %s %s' % (object_path, client)) if self.__test_index == len(TestCases['tests']): if DONE_EXIT: self.__window_destroy_cb() return self.__engine_is_focused = True pass def __engine_focus_out(self, engine, object_path=None): printflush('## Focus out engine %s' % object_path) self.__engine_is_focused = False def __window_destroy_cb(self): match Gtk.MAJOR_VERSION: case 4: self.__list_toplevel = False case 3: Gtk.main_quit() case _: self.gtk_version_exception() def __entry_map_cb(self, entry): printflush('## Map window') def __controller_enter_cb(self, controller): if self.is_integrated_desktop(): # Wait for 3 seconds in GNOME Wayland because there is a long time # lag between the "enter" signal on the event controller in GtkText # and the "FocusIn" D-Bus signal in BusInputContext of ibus-daemon. printflush('## Waiting for 3 secs') GLib.timeout_add_seconds(3, self.__controller_enter_delay, controller) else: printflush('## No Wait') GLib.idle_add(self.__controller_enter_delay, controller) def __controller_enter_delay(self, controller): text = controller.get_widget() if not text.get_realized(): return self.__entry_focus_in_event_cb(None, None) def __entry_focus_in_event_cb(self, entry, event): printflush('## Focus in entry') if self.__test_index == len(TestCases['tests']): if DONE_EXIT: self.__window_destroy_cb() return False self.__bus.set_global_engine_async('testanthy', -1, None, self.__set_engine_cb) return False def __idle_cb(self): if self.__engine_is_focused: self.__idle_loop.quit() return GLib.SOURCE_REMOVE elif self.__idle_count < 10: self.__idle_count += 1 return GLib.SOURCE_CONTINUE else: self.__idle_loop.quit() return GLib.SOURCE_REMOVE def __set_engine_cb(self, object, res): printflush('## Set engine') if not self.__bus.set_global_engine_async_finish(res): with self.subTest(i = self.__test_index): self.fail('set engine failed: ' + error.message) return self.__enable_hiragana() # ibus_im_context_focus_in() is called after GlobalEngine is set. # The focus-in/out events happen more slowly in a busy system # likes with a TMT tool. if self.is_integrated_desktop(): if 'IBUS_DAEMON_WITH_SYSTEMD' in os.environ and \ os.environ['IBUS_DAEMON_WITH_SYSTEMD'] != None: self.__idle_loop = GLib.MainLoop(None) self.__idle_count = 0 GLib.timeout_add_seconds(1, self.__idle_cb) self.__idle_loop.run() self.__main_test() def __get_test_condition_length(self, tag): tests = TestCases['tests'][self.__test_index] cases = tests[tag] type = list(cases.keys())[0] return len(cases[type]) def __entry_preedit_changed_cb(self, entry, preedit_str): # Wait for clearing the preedit before the next __main_test() is called. if self.__commit_done: if len(preedit_str) == 0: self.__preedit_changes = 0 self.__main_test() else: self.__preedit_changes += 1 return if self.__is_wayland: # Need to fix mutter # GTK calls self.__entry_preedit_changed_cb() twice by the actual # preedit update in GNOME Wayland in case the lookup window is not # shown yet and the preedit is changed but not the cursor position # only. # # I.e. GTK receives the struct zwp_text_input_v3_listener.done() # from Wayland text-input protocol when the preedit is updated # and the "preedit-changed" signal is called at first and the # zwp_text_input_v3_listener.done() also calls # zwp_text_input_v3_commit() to notify IM changes to mutter and # mutter receives the struct # zwp_text_input_v3_interface.commit_state() from Wayland text-input # protocol and it causes the zwp_text_input_v3_listener.done() and # the "preedit-changed" signal in GTK. if self.__preedit_changes < 1 and self.__conversion_spaces < 2 \ and self.__preedit_prev != preedit_str: self.__preedit_changes += 1 return else: self.__preedit_changes = 0 if self.__test_index == len(TestCases['tests']): if DONE_EXIT: self.__window_destroy_cb() return self.__preedit_prev = preedit_str conversion_length = self.__get_test_condition_length('conversion') if self.__conversion_index < conversion_length: self.__run_cases('conversion', self.__conversion_index, self.__conversion_index + 1) self.__conversion_index += 1 return self.__run_cases('commit') def __enable_hiragana(self): settings = Gio.Settings( schema = "org.freedesktop.ibus.engine.anthy.common"); result = settings.get_int('input-mode') if result != 0: printflush('## Enable hiragana %d' % result) key = TestCases['init'] self.__typing(key[0], key[1], key[2]) else: printflush('## Already hiragana') def __main_test(self): printflush('## Run case %d' % self.__test_index) self.__preedit_prev = None self.__conversion_index = 0 self.__conversion_spaces = 0 self.__commit_done = False self.__run_cases('preedit') def __run_cases(self, tag, start=-1, end=-1): tests = TestCases['tests'][self.__test_index] if tests == None: return cases = tests[tag] type = list(cases.keys())[0] i = 0 if type == 'string': printflush('test step: %s sequences: "%s"' \ % (tag, str(cases['string']))) for a in cases['string']: if start >= 0 and i < start: i += 1 continue if end >= 0 and i >= end: break; self.__typing(ord(a), 0, 0) i += 1 if type == 'keys': if start == -1 and end == -1: printflush('test step: %s sequences: %s' \ % (tag, str(cases['keys']))) for key in cases['keys']: if start >= 0 and i < start: i += 1 continue if end >= 0 and i >= end: break; if start != -1 or end != -1: printflush('test step: %s sequences: [0x%X, 0x%X, 0x%X]' \ % (tag, key[0], key[1], key[2])) # Check if the lookup table is shown. if tag == 'conversion' and \ (key[0] == IBus.KEY_Tab or key[0] == IBus.KEY_space): self.__conversion_spaces += 1 self.__typing(key[0], key[1], key[2]) i += 1 def __typing(self, keyval, keycode, modifiers): self.__engine.emit('process-key-event', keyval, keycode, modifiers) modifiers |= IBus.ModifierType.RELEASE_MASK; self.__engine.emit('process-key-event', keyval, keycode, modifiers) def __buffer_inserted_text_cb(self, buffer, position, chars, nchars): tests = TestCases['tests'][self.__test_index] cases = tests['result'] if cases['string'] == chars: printflush('OK: %d %s' % (self.__test_index, chars)) else: with self.subTest(i = self.__test_index): self.fail('NG: %d %s %s' \ % (self.__test_index, str(cases['string']), chars)) if DONE_EXIT: self.__window_destroy_cb() self.__test_index += 1 if self.__test_index == len(TestCases['tests']): if DONE_EXIT: self.__window_destroy_cb() return self.__entry.set_text('') # ibus-anthy updates preedit after commits the text. self.__commit_done = True def main(self): match Gtk.MAJOR_VERSION: case 4: while self.__list_toplevel: GLib.MainContext.default().iteration(True) case 3: Gtk.main() case _: self.gtk_version_exception() def test_typing(self): if not self.register_ibus_engine(): sys.exit(-1) self.__list_toplevel = True self.create_window() self.main() def print_help(out, v = 0): print('-e, --exit Exit this program after test is done.', file=out) print('-f, --force Run this program forcibly with .anthy.', file=out) print('-h, --help show this message.', file=out) print('\nenvironment variables:', file=out) print('IBUS_ANTHY_ENGINE_PATH Indicates the path which includes ' \ 'engine.py. the default is /usr/share/ibus-anthy/engine', file=out) print('IBUS_ANTHY_SETUP_PATH Indicates the path which includes ' \ 'prefs.py. the default is /usr/share/ibus-anthy/setup', file=out) sys.exit(v) def get_userhome(): if 'HOME' not in os.environ: import pwd userhome = pwd.getpwuid(os.getuid()).pw_dir else: userhome = os.environ['HOME'] userhome = userhome.rstrip('/') return userhome def main(): force_run = False parser = argparse.ArgumentParser() parser.add_argument('-k', '--keep', action='store_true', help='keep this GtkWindow after test is done') parser.add_argument('-f', '--force', action='store_true', help='run this program forcibly with .anthy') parser.add_argument('-t', '--tap', action='store_true', help='enable TAP') parser.add_argument('-F', '--unittest-failfast', action='store_true', help='stop on first fail or error in unittest') parser.add_argument('-H', '--unittest-help', action='store_true', help='show unittest help message and exit') args, unittest_args = parser.parse_known_args() sys.argv[1:] = unittest_args if args.keep: global DONE_EXIT DONE_EXIT = False if args.force: force_run = True if args.unittest_failfast: sys.argv.append('-f') if args.unittest_help: sys.argv.append('-h') unittest.main() for anthy_config in ['/.config/anthy', '/.anthy']: anthy_user_dir = get_userhome() + anthy_config anthy_last_file = anthy_user_dir + '/last-record2_default.utf8' if os.path.exists(anthy_last_file) and not force_run: print('Please remove %s before the test' % anthy_last_file, file=sys.stderr) sys.exit(-1) if args.tap: loader = unittest.TestLoader() if tap_module == TAP_MODULE_PYCOTAP: # Log should be in stderr instead of StringIO runner = TAPTestRunner(test_output_log=LogMode.LogToError) else: runner = TAPTestRunner() if tap_module == TAP_MODULE_TAPPY: runner.set_stream(True) unittest.main(testRunner=runner, testLoader=loader) else: unittest.main() if __name__ == '__main__': main() ibus-anthy-1.5.17/tests/meta.test.in000066400000000000000000000000661475510605700173020ustar00rootroot00000000000000[Test] Type=session Exec=@TEST_EXEC@ --tap Output=TAP ibus-anthy-1.5.17/tests/test-build.sh000077500000000000000000000124771475510605700174720ustar00rootroot00000000000000#!/bin/sh # vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # 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 $(top_builddir)/engine/python*/engine.py before install anthy BUILDDIR="."; SRCDIR="."; ANTHY_SCHEMA_FILE=org.freedesktop.ibus.engine.anthy.gschema.xml; SCHEMA_TMPDIR=""; FORCE_TEST=""; RUN_ARGS=""; # Fedora 39 Docker does not provide USER USER=${USER:-`id | sed -e "s/uid=[0-9]*(\([^)]*\)).*/\1/"`}; usage() { echo -e \ "This test runs top_builddir/engine/python*/engine.py before install anthy\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" \ "-f, --force Run test suite forcibly\n" \ "" } parse_args() { # This is GNU getopt. "sudo port getopt" in BSD? ARGS=`getopt -o hvb:s: --long help,version,builddir:,srcdir: \ -- "$@"`; 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;; -f | --force ) FORCE_TEST="1"; shift;; -- ) shift; break;; * ) usage; exit 1;; esac; done; } maybe_install_pycotap() { # Red Hat specific hint. if test -f /etc/redhat-release ; then if ! rpm -q --quiet python3-pycotap; then echo "Please install python3-pycotap" exit -1 fi fi; # Check if pycotap is already available. # No pycotap.__main__ and cannot be directly executed with `-m` option if ! python3 -c "import pycotap"; then PIP=pip3 if ! command -v $PIP &> /dev/null ; then PIP=pip fi echo "pycotap not found; installing via $PIP" if ! $PIP install pycotap --user; then echo "failed to install pycotap" exit -1 fi fi } init_environment() { if test x$FORCE_TEST != x ; then RUN_ARGS="$RUN_ARGS --force"; fi; maybe_install_pycotap if test ! -f $BUILDDIR/../data/$ANTHY_SCHEMA_FILE ; then echo "Not found $BUILDDIR/../data/$ANTHY_SCHEMA_FILE"; exit -1; fi; SCHEMA_TMPDIR=`mktemp -d`; if test $? -ne 0 ; then echo "FAILED mktemp"; exit -1; fi; cp $BUILDDIR/../data/$ANTHY_SCHEMA_FILE $SCHEMA_TMPDIR; glib-compile-schemas $SCHEMA_TMPDIR; if test $? -ne 0 ; then echo "FAILED glib-compile-schemas $SCHEMA_TMPDIR"; exit -1; fi; if test ! -f $SCHEMA_TMPDIR/gschemas.compiled ; then echo "Not found $SCHEMA_TMPDIR/gschemas.compiled"; exit -1; fi; ls $BUILDDIR/../gir/Anthy*.typelib > /dev/null; if test $? -ne 0 ; then echo "Not found $BUILDDIR/../gir/Anthy*.typelib"; exit -1; fi; } run_ibus_daemon() { # this script can run without Display ibus-daemon --daemonize --verbose --panel disable --emoji-extension disable; sleep 1; SUSER=`echo "$USER" | cut -c 1-7`; ps -ef | grep "$SUSER" | grep ibus | grep -v grep; } run_test_suite() { export GSETTINGS_SCHEMA_DIR=$SCHEMA_TMPDIR; export GI_TYPELIB_PATH=$BUILDDIR/../gir; LD_LIBRARY_PATH=$BUILDDIR/../gir/.libs; export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$BUILDDIR/../gir; export GTK_IM_MODULE=ibus; for i in 3; do echo "#### Starting Python$i API test $RUN_ARGS"; env IBUS_ANTHY_ENGINE_PATH=$SRCDIR/../engine/python$i \ IBUS_ANTHY_SETUP_PATH=$SRCDIR/../setup/python$i \ python$i -u $SRCDIR/anthytest.py $RUN_ARGS; RETVAL=$? # Return 5 with "NO TESTS RAN" in unittest/runner.py since python 3.12.1 if test $RETVAL -ne 0 && test $RETVAL -ne 5; then exit 1; fi; if test x$FORCE_TEST = x ; then rm -r $HOME/.anthy; rm -r $HOME/.config/anthy; fi; done; } finit() { rm -rf $SCHEMA_TMPDIR; ibus exit; } main() { parse_args $@; init_environment; run_ibus_daemon; run_test_suite; finit; } main $@; ibus-anthy-1.5.17/tests/test-console.sh000077500000000000000000000140361475510605700200260ustar00rootroot00000000000000#!/bin/sh # vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2018 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/share/ibus-anthy/engine/engine.py after install anthy PROGNAME=`basename $0`; VERSION=0.1; DISPLAY=:99.0; BUILDDIR="."; SRCDIR="."; HAVE_GRAPHICS=1; DESKTOP_COMMAND="gnome-session"; PYTHON="python3"; PID_XORG=0; PID_GNOME_SESSION=0; FORCE_TEST=""; RUN_ARGS="--exit"; # Fedora 39 Docker does not provide USER USER=${USER:-`id | sed -e "s/uid=[0-9]*(\([^)]*\)).*/\1/"`}; usage() { echo -e \ "This test runs /usr/share/ibus-anthy/engine/engine.py after install anthy\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" \ "-p, --python=PATH Use the PATH of python2 or python3\n" \ "-d, --desktop=DESKTOP Run DESTKTOP. The default is gnome-session\n"\ "-f, --force Run test suite forcibly\n" \ "" } parse_args() { # This is GNU getopt. "sudo port getopt" in BSD? ARGS=`getopt -o hvb:s:cp:d:f --long help,version,builddir:,srcdir:,no-graphics,python:,desktop:,force \ -- "$@"`; 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;; -p | --python ) PYTHON="$2"; shift 2;; -d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;; -f | --force ) FORCE_TEST="1"; shift;; -- ) shift; break;; * ) usage; exit 1;; esac; done; } init_desktop() { if test x$FORCE_TEST != x ; then RUN_ARGS="$RUN_ARGS --force"; fi; if test ! -f $HOME/.config/gnome-initial-setup-done ; then 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=false _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 test -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 } run_dbus_daemon() { a=`ps -ef | grep dbus-daemon | grep "\-\-system" | grep -v session | grep -v grep` if test x"$a" = x ; then eval `dbus-launch --sh-syntax` fi SUSER=`echo "$USER" | cut -c 1-7`; a=`ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | grep session | grep -v grep` if test x"$a" = x ; then systemctl --user start dbus export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus fi systemctl --user status dbus | col -b ps -ef | grep dbus-daemon | grep "$SUSER" | grep -v gdm | egrep 'session|system' | grep -v grep systemctl --user show-environment | col -b } run_desktop() { 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; export DISPLAY=$DISPLAY; $DESKTOP_COMMAND & PID_GNOME_SESSION=$!; sleep 30; if test "$DESKTOP_COMMAND" != "gnome-session" ; then ibus-daemon --daemonize --verbose; sleep 1; fi } run_test_suite() { rm -rf $HOME/.anthy; rm -rf $HOME/.config/anthy; cd `dirname $0`; echo "#### Starting $PYTHON API test $RUN_ARGS"; export GTK_IM_MODULE=ibus $PYTHON -u $SRCDIR/anthytest.py $RUN_ARGS; RETVAL=$? # Return 5 with "NO TESTS RAN" in unittest/runner.py since python 3.12.1 if test $RETVAL -ne 0 && test $RETVAL -ne 5; then exit 1; fi; if test x$FORCE_TEST = x ; then for ANTHY_CONFIG in ".anthy" ".config/anthy" ; do if test -d $HOME/$ANTHY_CONFIG ; then rm -r $HOME/$ANTHY_CONFIG; fi; done; fi; } finit() { if "test $DESKTOP_COMMAND" != "gnome-session" ; then ibus exit; fi; kill $PID_GNOME_SESSION $PID_XORG; } main() { parse_args $@; init_desktop; run_dbus_daemon; run_desktop; run_test_suite; finit; } main $@;