pax_global_header00006660000000000000000000000064151466015400014514gustar00rootroot0000000000000052 comment=d2cebdebfd74bd8f9ecd242b6a86ff15c3858447 ibus-ibus-anthy-8b39a01/000077500000000000000000000000001514660154000150705ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/.github/000077500000000000000000000000001514660154000164305ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/.github/ISSUE_TEMPLATE.md000066400000000000000000000021351514660154000211360ustar00rootroot00000000000000*** 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-ibus-anthy-8b39a01/.github/ISSUE_TEMPLATE/000077500000000000000000000000001514660154000206135ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/.github/ISSUE_TEMPLATE/bug_report.yml000066400000000000000000000072441514660154000235150ustar00rootroot00000000000000name: 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-ibus-anthy-8b39a01/.github/workflows/000077500000000000000000000000001514660154000204655ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/.github/workflows/main.yml000066400000000000000000000114261514660154000221400ustar00rootroot00000000000000name: CI on: push: branches: [ main ] pull_request: jobs: version: runs-on: ubuntu-latest strategy: fail-fast: false matrix: container: ["fedora:43", "fedora:44", "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:43", "fedora:44", "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-ibus-anthy-8b39a01/.gitignore000066400000000000000000000005301514660154000170560ustar00rootroot00000000000000*.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-ibus-anthy-8b39a01/.travis.yml000066400000000000000000000026401514660154000172030ustar00rootroot00000000000000language: 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-ibus-anthy-8b39a01/AUTHORS000066400000000000000000000004241514660154000161400ustar00rootroot00000000000000 Huang Peng Hideaki ABE Takao Fujiwara Translators: ----------- fr.po: Humbert Julien zh_CN.po: Huang Peng ja.po: UTUMI Hirosi ibus-ibus-anthy-8b39a01/COPYING000066400000000000000000000431031514660154000161240ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/ChangeLog000066400000000000000000000000001514660154000166300ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/Makefile.am000066400000000000000000000051561514660154000171330ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/NEWS000066400000000000000000000000001514660154000155550ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/README000066400000000000000000000115101514660154000157460ustar00rootroot00000000000000ibus-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-ibus-anthy-8b39a01/autogen.sh000077500000000000000000000017721514660154000171000ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/codereview.settings000066400000000000000000000001531514660154000210050ustar00rootroot00000000000000# This file is used by "git cl" to get code review information. CODE_REVIEW_SERVER: codereview.appspot.com ibus-ibus-anthy-8b39a01/configure.ac000066400000000000000000000376541514660154000173750ustar00rootroot00000000000000# vim:set et ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2007-2008 Peng Huang # Copyright (c) 2010-2026 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], [18]) 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 python3. python2 is no longer supported.]), [PYTHON=$with_python], [] ) dnl export $pyexecdir using existent $PYTHON AM_PATH_PYTHON([3.0]) 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 ;; *) AC_MSG_ERROR([Not support PYTHON $PYTHON]) ;; esac 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_NOTICE([pygtk2 does not work because python2 is no longer supported.]) AC_ARG_ENABLE(pygtk2-anthy, AS_HELP_STRING([--enable-pygtk2-anthy=no/yes], [pygtk2 is no longer supported.]), enable_pygtk2=no, enable_pygtk2=no) if test x"$enable_pygtk2" = 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/python3/Makefile engine/python3/anthy.inputMethod.xml.in engine/python3/default.inputMethod.xml.in setup/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 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-ibus-anthy-8b39a01/data/000077500000000000000000000000001514660154000160015ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/data/Makefile.am000066400000000000000000000074451514660154000200470ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2026 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. noinst_DATA = era.stamp 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 \ era.stamp \ $(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 era.t: era.stamp era.stamp: if test -f $(srcdir)/era.t ; then \ if ! $(srcdir)/era.py --check $(srcdir)/era.t ; then \ rm $(srcdir)/era.t; \ $(srcdir)/era.py $(srcdir)/era.t.in \ --output $(builddir)/era.t; \ echo "Generate era.t"; \ fi; \ fi; \ touch era.stampT; \ mv era.stampT era.stamp; check: if test -f $(srcdir)/era.t ; then \ $(srcdir)/era.py --check $(srcdir)/era.t; \ else \ $(srcdir)/era.py --check $(builddir)/era.t; \ 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 \ era.t.in \ era.py \ oldchar.t \ symbol.t \ zipcode-textdic.py \ $(NULL) ibus-ibus-anthy-8b39a01/data/emoji-each.t000066400000000000000000001654531514660154000202050ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/data/emoji-emoji.t000066400000000000000000000567711514660154000204120ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/data/era.py000077500000000000000000000141271514660154000171320ustar00rootroot00000000000000#!/usr/bin/python3 # vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2026 Takao Fujiwara # # 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 datetime import date from os import path import getopt import locale import re import sys _prgname = "" class JapaneseEra(object): VERSION = 1 ERA_FIRST = 2019 HIRAGANA_ERA = 'れいわ' KANJI_ERA = '令和' KANJI_ERA_PREV = '平成' __S_YEAR = 0 __M_YEAR = '' __narrow_to_wide_map = None _check = False _output_file = None _parse_file = None _parse_contents = None def __init__(self): if self._parse_file == None: print("%s.parse_args() should be called before the instance " "is generated." % str(self), file=sys.stderr) sys.exit(1) self.__narrow_to_wide_map = str.maketrans('0123456789', '0123456789') self.__S_YEAR = date.today().year self.__M_YEAR = str(self.__S_YEAR).translate(self.__narrow_to_wide_map) parse_file = open(self._parse_file) self._parse_contents = parse_file.read() parse_file.close() @classmethod def parse_args(cls)->None: shortopt = 'cho:v' longopt = ['check', 'help', 'output=', 'version'] try: opts, args = getopt.gnu_getopt(sys.argv[1:], shortopt, longopt) except getopt.GetoptError as err: cls.print_help(sys.stderr, 1) for o, a in opts: if o in ('-h', '--help'): cls.print_help(sys.stdout) elif o in ('-c', '--check'): cls._check = True elif o in ('-o', '--output'): cls._output_file = a elif o in ('-v', '--version'): print("%s Version %d" % (_prgname, cls.VERSION)) sys.exit(0) else: print('Unknown argument: %s' % o, file=sys.stderr) cls.print_help(sys.stderr, 1) if len(args) == 0: cls.print_help(sys.stderr, 1) cls._parse_file = args[0] @staticmethod def print_help(out, v=0)->None: print("%s [OPTIONS...] ERA_FILE" % _prgname, file=out) print("This replaces @HIRAGANA_TO_LATEST_ERA@ with latest Japanese Era " "in ERA_FILE", file=out) print('OPTIONS', file=out) print('-c, --check Check if the latest Japanese Era in ERA_FILE.', file=out) print('-h, --help Show this message.', file=out) print('-v, --version Show version.', file=out) sys.exit(v) def run(self)->None: if self._check: self.check() else: self.update_file_with_keywords() def check(self)->None: if self._parse_contents == None: assert() pat = r'{}.*'.format(self.__M_YEAR) res = re.findall(pat, self._parse_contents, re.MULTILINE) if res: print(res) else: print("This year {0} is not included in {1}".format( self.__M_YEAR, self._parse_file), file=sys.stderr) sys.exit(1) def update_file_with_keywords(self)->None: if self._parse_contents == None: assert() HIRAGANA_TO_LATEST_ERA = '' YEAR_TO_LATEST_ERA = '' s_n = 1 s_y = self.ERA_FIRST while(s_y <= self.__S_YEAR): m_n = str(s_n).translate(self.__narrow_to_wide_map) m_y = str(s_y).translate(self.__narrow_to_wide_map) HIRAGANA_TO_LATEST_ERA = \ """{0}{1}{2} #T35*500 {3}{4} {5}{6} #T35*500 {7} """.format(HIRAGANA_TO_LATEST_ERA, self.HIRAGANA_ERA, m_n, self.KANJI_ERA, s_n, self.HIRAGANA_ERA, m_n, s_y) YEAR_TO_LATEST_ERA = \ """{0}{1} #T35*500 {2}{3} """.format(YEAR_TO_LATEST_ERA, m_y, self.KANJI_ERA, s_n) s_n = s_n + 1 s_y = s_y + 1 HIRAGANA_TO_LATEST_ERA = HIRAGANA_TO_LATEST_ERA.strip() YEAR_TO_LATEST_ERA = YEAR_TO_LATEST_ERA.strip() tmp = self._parse_contents.replace( '@HIRAGANA_TO_REIWA@', HIRAGANA_TO_LATEST_ERA).replace( '@YEAR_TO_REIWA@', YEAR_TO_LATEST_ERA) s_y = self.ERA_FIRST m_y = str(s_y).translate(self.__narrow_to_wide_map) pat = r'({0} #T35\*500 {1}[0-9]+)\n({2} #T35\*500 {3}1)'.format( m_y, self.KANJI_ERA_PREV, m_y, self.KANJI_ERA) # The lest Era should be first. res = re.sub(pat, r'\2\n\1', tmp) if res: if self._output_file: f = open(self._output_file, mode='w') f.write(res) f.flush() f.close() else: print(res) else: print('Failed to find %s in %s' % (pat, self._parse_file), file=sys.stderr) if self._output_file: f = open(self._output_file, mode='w') f.write(tmp) f.flush() f.close() else: print(tmp) def main()->None: try: locale.setlocale(locale.LC_ALL, '') except: pass global _prgname _prgname = path.basename(sys.argv[0]) JapaneseEra.parse_args() era = JapaneseEra() era.run() if __name__ == '__main__': main() ibus-ibus-anthy-8b39a01/data/era.t000066400000000000000000000410151514660154000167360ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2026 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 れいわ8 #T35*500 令和8 れいわ8 #T35*500 2026 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 2026 #T35*500 令和8 ibus-ibus-anthy-8b39a01/data/era.t.in000066400000000000000000000375711514660154000173570ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2010-2026 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 @HIRAGANA_TO_REIWA@ 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 平成31 @YEAR_TO_REIWA@ ibus-ibus-anthy-8b39a01/data/ibus-anthy.appdata.xml.in000066400000000000000000000035451514660154000226330ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/data/oldchar.t000066400000000000000000000025731514660154000176110ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/data/org.freedesktop.ibus.engine.anthy.gschema.xml.in000066400000000000000000001424021514660154000271710ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/data/symbol.t000066400000000000000000000407771514660154000175120ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/data/zipcode-textdic.py000077500000000000000000000036641514660154000214660ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/debian/000077500000000000000000000000001514660154000163125ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/debian/changelog000066400000000000000000000101641514660154000201660ustar00rootroot00000000000000ibus-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-ibus-anthy-8b39a01/debian/compat000066400000000000000000000000021514660154000175100ustar00rootroot000000000000007 ibus-ibus-anthy-8b39a01/debian/control000066400000000000000000000017341514660154000177220ustar00rootroot00000000000000Source: 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-ibus-anthy-8b39a01/debian/copyright000066400000000000000000000024221514660154000202450ustar00rootroot00000000000000This 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-ibus-anthy-8b39a01/debian/rules000077500000000000000000000017731514660154000174020ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/debian/source/000077500000000000000000000000001514660154000176125ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/debian/source/format000066400000000000000000000000141514660154000210200ustar00rootroot000000000000003.0 (quilt) ibus-ibus-anthy-8b39a01/debian/watch000066400000000000000000000001701514660154000173410ustar00rootroot00000000000000version=3 http://code.google.com/p/ibus/downloads/list \ http://ibus.googlecode.com/files/ibus-anthy-([0-9].*)\.tar\.gz ibus-ibus-anthy-8b39a01/engine/000077500000000000000000000000001514660154000163355ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/engine/.gitignore000066400000000000000000000000501514660154000203200ustar00rootroot00000000000000anthy.py anthy_wrap.c ibus-engine-anthy ibus-ibus-anthy-8b39a01/engine/Makefile.am000066400000000000000000000016501514660154000203730ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2014-2025 Takao Fujiwara # Copyright (c) 2014-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 = if ENABLE_PYTHON3 SUBDIRS += python3 endif ibus-ibus-anthy-8b39a01/engine/python2/000077500000000000000000000000001514660154000177405ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/engine/python2/Makefile.am000066400000000000000000000075061514660154000220040ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/_config.py.in000066400000000000000000000023011514660154000223170ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/anthy.i000066400000000000000000000062051514660154000212400ustar00rootroot00000000000000/* 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-ibus-anthy-8b39a01/engine/python2/anthy.inputMethod.xml.in.in000066400000000000000000000012221514660154000251130ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/engine/python2/default.inputMethod.xml.in.in000066400000000000000000000010711514660154000254160ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/engine/python2/engine.py000066400000000000000000003356421514660154000215740ustar00rootroot00000000000000# 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, ibus_check_version 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: 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() # 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-ibus-anthy-8b39a01/engine/python2/factory.py000066400000000000000000000053611514660154000217660ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/ibus-engine-anthy.in000066400000000000000000000021711514660154000236170ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/engine/python2/jastring.py000066400000000000000000000273541514660154000221460ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/kana.py000066400000000000000000000141401514660154000212240ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/main.py000066400000000000000000000163321514660154000212430ustar00rootroot00000000000000# 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 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)) # Need to call IBus.init() before IBus.EngineSimple() is loaded. # factory -> engine -> IBus.EngineSimple try: # IBus.init() has not been needed here since IBus 1.5.32 ibus_check_version("1.5.32") except ValueError: import inspect parent_frame = inspect.currentframe().f_back # Call IBus.init() again from "from main import get_userhome" in engin.py. # The twice IBus.init() issue has been fixed since IBus 1.5.31 by # https://github.com/ibus/ibus/commit/9f50b46 if parent_frame == None: 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-ibus-anthy-8b39a01/engine/python2/romaji.py000066400000000000000000000220321514660154000215720ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/segment.py000066400000000000000000000055641514660154000217660ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/tables.py000066400000000000000000000414031514660154000215660ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python2/test.py000066400000000000000000000010221514660154000212640ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/engine/python2/thumb.py000066400000000000000000000503431514660154000214360ustar00rootroot00000000000000# -*- 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-ibus-anthy-8b39a01/engine/python3/000077500000000000000000000000001514660154000177415ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/engine/python3/Makefile.am000066400000000000000000000075061514660154000220050ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/_config.py.in000066400000000000000000000022761514660154000223330ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/anthy.i000066400000000000000000000062051514660154000212410ustar00rootroot00000000000000/* 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-ibus-anthy-8b39a01/engine/python3/anthy.inputMethod.xml.in.in000066400000000000000000000012221514660154000251140ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/engine/python3/default.inputMethod.xml.in.in000066400000000000000000000010711514660154000254170ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/engine/python3/engine.py000066400000000000000000003403501514660154000215650ustar00rootroot00000000000000# 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-2026 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, ibus_check_version 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): __gtype_name__ = 'IBusEngineAnthy' __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 self.__has_preedit_format_hint = 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: 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 if hasattr(IBus, 'attr_hint_new'): self.__has_preedit_format_hint = True # 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('focus-in', self.__focus_in) # flashing compose sequence in GNOME instead of system bell self.connect('focus-in-id', self.__focus_in_id) self.connect('focus-out', self.__focus_out) self.connect('focus-out-id', self.__focus_out_id) 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() # 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 __focus_in(self, obj): self.__focus_in_id(obj, None, None) def __focus_in_id(self, obj, 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 __focus_out(self, obj): self.__focus_out_id(obj, None) def __focus_out_id(self, obj, 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() if self.__has_preedit_format_hint: attrs.append(IBus.attr_hint_new( IBus.AttrPreedit.WHOLE, 0, len(text))) else: 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() if self.__has_preedit_format_hint: attrs.append(IBus.attr_hint_new( IBus.AttrPreedit.WHOLE, 0, len(text))) attrs.append(IBus.attr_hint_new( IBus.AttrPreedit.SELECTION, 0, len(text))) else: 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() if self.__has_preedit_format_hint: attrs.append(IBus.attr_hint_new( IBus.AttrPreedit.WHOLE, 0, len(self.__convert_chars))) attrs.append(IBus.attr_hint_new( IBus.AttrPreedit.SELECTION, pos, pos + len(self.__segments[self.__cursor_pos][1]))) else: 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: # Test case: Type "watashi", Tab, Backspace if self.__convert_mode == CONV_MODE_PREDICTION: # self.__context.get_prediction(NTH_UNCONVERTED_CANDIDATE) # is always None so use the preedit instead. buf, cursor = self.__preedit_ja_string.get_hiragana(True) else: 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-ibus-anthy-8b39a01/engine/python3/factory.py000066400000000000000000000054311514660154000217650ustar00rootroot00000000000000# 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-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): __gtype_name__ = 'IBusFactoryAnthy' 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-ibus-anthy-8b39a01/engine/python3/ibus-engine-anthy.in000066400000000000000000000021711514660154000236200ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/engine/python3/jastring.py000066400000000000000000000272411514660154000221420ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/kana.py000066400000000000000000000140101514660154000212210ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/main.py000066400000000000000000000162331514660154000212440ustar00rootroot00000000000000# 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 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)) # Need to call IBus.init() before IBus.EngineSimple() is loaded. # factory -> engine -> IBus.EngineSimple try: # IBus.init() has not been needed here since IBus 1.5.32 ibus_check_version("1.5.32") except ValueError: import inspect parent_frame = inspect.currentframe().f_back # Call IBus.init() again from "from main import get_userhome" in engin.py. # The twice IBus.init() issue has been fixed since IBus 1.5.31 by # https://github.com/ibus/ibus/commit/9f50b46 if parent_frame == None: 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-ibus-anthy-8b39a01/engine/python3/romaji.py000066400000000000000000000217741514660154000216070ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/segment.py000066400000000000000000000055361514660154000217660ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/tables.py000066400000000000000000000367441514660154000216030ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/engine/python3/test.py000066400000000000000000000010221514660154000212650ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/engine/python3/thumb.py000066400000000000000000000472351514660154000214450ustar00rootroot00000000000000# -*- 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-ibus-anthy-8b39a01/gir/000077500000000000000000000000001514660154000156515ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/gir/Makefile.am000066400000000000000000000051271514660154000177120ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/gir/anthygcontext.c000066400000000000000000000146411514660154000207220ustar00rootroot00000000000000/* -*- 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-ibus-anthy-8b39a01/gir/anthygcontext.h000066400000000000000000000143671514660154000207340ustar00rootroot00000000000000/* -*- 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-ibus-anthy-8b39a01/gir/test.c000066400000000000000000000021451514660154000167760ustar00rootroot00000000000000#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-ibus-anthy-8b39a01/gir/test.py000066400000000000000000000010441514660154000172010ustar00rootroot00000000000000# -*- 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-ibus-anthy-8b39a01/ibus-anthy.spec.in000066400000000000000000000061011514660154000204320ustar00rootroot00000000000000%{!?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-ibus-anthy-8b39a01/icons/000077500000000000000000000000001514660154000162035ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/icons/Makefile.am000066400000000000000000000025421514660154000202420ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/icons/ibus-anthy-old.png000066400000000000000000000032721514660154000215540ustar00rootroot00000000000000PNG  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-ibus-anthy-8b39a01/m4/000077500000000000000000000000001514660154000154105ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/m4/.gitignore000066400000000000000000000000051514660154000173730ustar00rootroot00000000000000*.m4 ibus-ibus-anthy-8b39a01/m4/Makefile.am000066400000000000000000000021411514660154000174420ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/m4/as-version.m4000066400000000000000000000037701514660154000177470ustar00rootroot00000000000000dnl 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-ibus-anthy-8b39a01/po/000077500000000000000000000000001514660154000155065ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/po/.gitignore000066400000000000000000000002741514660154000175010ustar00rootroot00000000000000Makefile 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-ibus-anthy-8b39a01/po/LINGUAS000066400000000000000000000002021514660154000165250ustar00rootroot00000000000000# please keep this list sorted alphabetically # ca cs de el es et fi fr hu id it ja ka kab kk ko pa pt pt_BR ro si sv tr uk zh_CN ibus-ibus-anthy-8b39a01/po/Makevars000066400000000000000000000070321514660154000172040ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/POTFILES.in000066400000000000000000000010351514660154000172620ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/POTFILES.skip000066400000000000000000000004421514660154000176230ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/ca.po000066400000000000000000000742341514660154000164430ustar00rootroot00000000000000# Catalan translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 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. # naly zzwd , 2025. # Weblate Translation Memory , 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-05-18 10:45+0000\n" "Last-Translator: Weblate Translation Memory \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 5.11.3\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Mètode d'entrada japonès" #: 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 "" "El mètode d'entrada Anthy està dissenyat per a l'entrada de text en japonès." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "mètode d'entrada" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japonès" #: data/ibus-anthy.appdata.xml.in:31 #, fuzzy msgid "See the upstream release list." msgstr "Vegeu la llista de versions upstream." #: 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 "" "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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Anthy - Preferències" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Mode d'entrada" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Commuta el mode d'entrada" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana d'amplada mitjana" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Llatí" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Llatí ampli" #: 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 "mètode mecanogràfic" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Commuta el mètode mecanogràfic" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Alternança amb el polze" #: 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 "Mode de segment" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Commuta al mode de conversió" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segment múltiple" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segment individual" #: 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 "Conversió immediata (segment múltiple)" #: 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 "Conversió immediata (segment individual)" #: 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 "Mode de diccionari" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Commuta el diccionari" #: 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 - Diccionari" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Dic" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Configura els diccionaris" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Edita els diccionaris" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Llança l'eina de diccionari" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Afegeix paraules" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Afegeix paraules al diccionari" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "General" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Conversió del codi postal" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Símbol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Estil de caràcter antic" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Ajust Anthy IBus" #: 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 "Prepara el motor Anthy d'IBus" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Etiqueta de menú" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Ordre" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Drecera" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Descripció" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Incrustat" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Indv" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Caràcters d'entrada" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Caràcters de sortida" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Entrada" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Individual" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Esquerra" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Dreta" #: setup/python2/main.py:587 setup/python3/main.py:591 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:592 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:593 setup/python3/main.py:599 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Per defecte" #: setup/python2/main.py:593 setup/python3/main.py:597 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:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Taula de tecles _kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Disposició de teclat japonesa" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Disposició de teclat dels EUA" #: setup/python2/main.py:600 setup/python3/main.py:604 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:605 msgid "_Thumb Shift Key Table:" msgstr "_Taula de tecles d'alternança amb el polze:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Caràcters de s_ortida individual" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Extensió de tecles NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Extensió de tecles NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Extensió de tecles NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Extensió de tecles FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Extensió de tecles FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Extensió de tecles FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Extensió de tecles FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Extensió de tecles FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Extensió de tecles FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 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:761 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:765 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:769 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:778 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:937 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:1044 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:1256 msgid "Please specify Input Chars" msgstr "Si us plau, especifiqueu els caràcters d'entrada" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Si us plau, especifiqueu els caràcters de sortida" #: setup/python2/main.py:1269 setup/python3/main.py:1262 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:1265 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:1278 setup/python3/main.py:1312 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:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "El vostre fitxer no existeix: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Obre el fitxer de diccionari" #: 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 "_Cancel·la" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Obre" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Edita el fitxer de diccionari" #: 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 "D'ac_ord" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "El fitxer que heu triat no és vàlid." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "No podeu eliminar el diccionari del sistema." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "El vostre fitxer no està bé." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Visualitza el fitxer de diccionari" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Premeu una tecla (o una combinació de tecles)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 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:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "keysym no vàlid" #: 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 "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úscules" #: 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 " #~ msgid "Anthy Input Method" #~ msgstr "Mètode d'entrada Anthy" ibus-ibus-anthy-8b39a01/po/cs.po000066400000000000000000000776601514660154000164730ustar00rootroot00000000000000# Czech translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Zdenek , 2017-2018. #zanata # Jonas Hubeny , 2026. # Weblate Translation Memory , 2026. msgid "" msgstr "" "Project-Id-Version: ibus-anthy master\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: 2026-02-18 19:58+0000\n" "Last-Translator: Jonas Hubeny \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 5.16\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Japonská vstupní metoda" #: 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 metoda vstupu je navržená pro zadávání japonského textu." #: 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 "" "Vstupní metody jsou systémy pro psaní, díky kterým uživatelé mohou zadávat " "vstup ve složitějších jazycích. Jsou nezbytné, protože obsahují příliš moc " "znaků, které by se na \"klasickou\" klávesnici nevešly." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "metoda vstupu" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japonský" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Viz seznam vydání upstreamu." #: 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 "" "Nelze povolit Anthy.\n" "Konec obsahu souboru %s/last-record2_default.utf8 ve vaší domovské složce " "není '\\n'. I.e. což není správný textový formát.\n" "Prosím opravte soubor nebo ho vymažte manuálně a restartujte 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 "Předvolby - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 msgid "Configure Anthy" msgstr "Nastavení 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 "Režim vstupu" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Přepnout režim vstupu" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Polovina Katakana" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latina" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Široká latina" #: 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 "Metoda psaní" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Přepnout metodu psaní" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "římský" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Palcové řazení" #: 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 "Segmentový režim" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Přepnout režim konverzace" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Více segmentů" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Samostatný segment" #: 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 "Okamžitá konverzace (vícesegmentový)" #: 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 "Okamžitá konverzace (samostatný segment)" #: 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 "Režim slovníku" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Přepnout slovník" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Slovník - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Slovík" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Nastavení slovníků" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Upravit slovníky" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Spustit slovníkový nástroj" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Přidat slova" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Přidat slova do slovníku" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Obecné" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Převod poštovního směrovacího čísla" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Symbol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Starý znakový styl" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Éra" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Nastavení 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 "Nastavení modulu IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Název nabídky" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: setup/python2/main.py:198 setup/python3/main.py:200 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:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Zkratka" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Popis" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Vestavěný" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Samostatný" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Vstupní znaky" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Výstupní znaky" # auto translated by TM merge from project: Pulseaudio, version: 6.0, DocId: pulseaudio.pot #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Vstup" # auto translated by TM merge from project: anaconda, version: f25, DocId: main #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Jediný" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Vlevo" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Vpravo" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Přizpůsobte tabulku kláves 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 "_Tabulka kláves 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 "_Výstupní znaky" # auto translated by TM merge from project: Cockpit, version: rhel-7.4, DocId: cockpit #: 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 "Výchozí" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Přizpůsobte tabulku kláves 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 "_Tabulka kláves Kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Japonské rozvržení klávesnice" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "U.S. rozvržení klávesnice" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Upravit tabulku kláves palcového řazení" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Tabulka kláves palcového řazení:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Jednotlivé_znaky výstupu" # auto translated by TM merge from project: comps, version: master, DocId: po/comps #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Základ" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Klávesové rozšíření NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Klávesové rozšíření NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Klávesové rozšíření NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Klávesové rozšíření FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Klávesové rozšíření FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Klávesové rozšíření FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Klávesové rozšíření FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Klávesové rozšíření FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Klávesové rozšíření FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Váš vybraný soubor je už přidaný: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "Soubor, který jste vybrali neexistuje: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Váš vybraný soubor je složka: " #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Nemůžete přidávat slovníky do anthy soukromého slovníku: " #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "Zadaná cesta k souboru není platná: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Soubor xml modulu neexituje: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Rozložení klávesnice Anthy bylo změněno. Prosím restartujte ibus pro načtení " "tohoto rozložení." #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Prosím specifikujte vstupní znaky" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Prosím specifikujte výstupní znaky" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Prosím specifikujte znaky levého palcového řazení" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Prosím specifikujte znaky pravého palcového řazení" #: 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 "Váše vlastní klávesa není přiřazena k žádné sekci. Možná chyba." #: 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 "Váš soubor neexistuje: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Otevřít slovníkový soubor" # auto translated by TM merge from project: blivet-gui, version: master, DocId: po/blivet-gui #: 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 "_Zrušit" # auto translated by TM merge from project: virt-manager, version: master, DocId: virt-manager #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Otevřít" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Upravit slovníkový soubor" # auto translated by TM merge from project: virt-viewer, version: master, DocId: virt-viewer #: 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 "Váš vybraný soubor není správný." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Nemůžete odstranit systémový slovník." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Váš soubor není platný." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Zobrazit slovníkový soubor" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Stiskněte prosím klávesu (či kombinaci kláves)." #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "Po uvolnění klávesy bude dialog zavřen" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Neplatný klíč" #: 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 "Tento klávesový symbol není platný" #: 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" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/setup.ui:55 setup/python3/setup.ui:55 msgid "None" msgstr "Žádný" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "klávesové rozšíření FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "klávesové rozšíření FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Zachovat kódy numerické klávesnice" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Převést znaky" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Nedělat nic" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Automaticky převést" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Automaticky odeslat" # auto translated by TM merge from project: FreeIPA, version: ipa-4-5, DocId: po/ipa #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Vymazat" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Odeslat" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Pozastavit" #: 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 "Nastavení - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Vstupní režim:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Psací metoda:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Převáděcí_metoda:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Počáteční nastavení" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Viditelnost nabídky na ikoně stavu" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_Styl období:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Styl symbo_lu:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Typ klávesy na numerické klávesnici:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Chování v období:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Chování při _Focus Out:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Chování" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Velikost stránky okna s kandidáty:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Převést_symboly s šířkou jednoho sloupce" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Převést čísla s šířkou jednoho sloupce" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Převést mezery s šířkou jednoho sloupce" #: 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 "" "Přepínat mezi „Hiragana“ a „Latin“ pomocí klávesy Shift a klávesy Hiragana–" "Katakana během přededitace" # auto translated by TM merge from project: ibus-libpinyin, version: master, DocId: ibus-libpinyin #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Jiné" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Převod" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_Typ zkratky:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Výchozí" # auto translated by TM merge from project: ibus-libpinyin, version: master, DocId: ibus-libpinyin #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Upravit" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Přiřazení kláves" #: 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 "Rozvržení klávesnice:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Rozložení klávesnice" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Psací metoda" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "_Levá klávesa pro palcové řazení:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Pravá klávesa pro palcové řazení:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Upravit rozložení vstupní metody podle systémového rozložení klávesnice" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Upravit IM rozložení podle XKB layout" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Rozložení pro vstupní metodu:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Restartujte IBus když změníte rozložení klávesnice" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Restartujte IBus když změníte XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "Dodatečné uspořádání kláves:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "'~', '『', '¢', '£' a další lze zadat pomocí klávesy palcového řazení" #: 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 "" "Není nutné přenastavovat rozložení klávesnice systému pro „Dodatečné " "rozložení kláves“, protože tato volba mění rozložení vstupní metody pouze v " "případě, že je vstupní metoda zapnutá." #: 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 "" "Není nutné přenastavovat XKB, protože tato možnost mění IM rozložení pouze " "při zapnutém IM." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Povolit polohlasné zvukové značky pomocí klávesy Shift" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift může generovat Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Tabulka kláves palcového řazení:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Rozložení palcového řazení" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Palcové řazení" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "_Upravit slovníkový příkaz:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "_Přidat slovní příkaz:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Výchozí nastavení slovníku" # auto translated by TM merge from project: virt-viewer, version: master, DocId: virt-viewer #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Zobrazit" # auto translated by TM merge from project: system-config-printer, version: master, DocId: system-config-printer #: 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 "Přid_at" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "O_dstranit" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "_Výše" #: 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 "Můžete změnit pořadí v jazykové liště" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Níže" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Rozšířené slovníky" # auto translated by TM merge from project: ibus-libpinyin, version: master, DocId: ibus-libpinyin #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Slovník" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "O nás" # auto translated by TM merge from project: virt-viewer, version: master, DocId: virt-viewer #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Zavřít" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Upravit zkratku" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Klávesa:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modifikátor:" #: 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 #, fuzzy msgid "Co_ntrol" msgstr "Co_ntrol" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 #, fuzzy msgid "_Shift" msgstr "_Shift" # auto translated by TM merge from project: system-config-printer, version: master, DocId: system-config-printer #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Obnovit" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "_Vstupní znaky" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "_Výstupní znaky" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_Levé palcové řazení" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_Pravé palcové řazení" # auto translated by TM merge from project: ibus, version: head, DocId: ibus10 #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Odebrat" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "_Krátký název:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Popis:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Používejte slovník samostatně s přepínáním slovníků" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Vložte svůj slovník do systémového slovníku" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Povolte _reverzní převod" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Modul Anthy pro vstupní platformu IBus" # auto translated by TM merge from project: ibus-input-pad, version: head, DocId: ibus-input-pad #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "zásluha překladatelů" # auto translated by TM merge from project: system-config-printer, version: master, DocId: system-config-printer #~ msgid "_Apply" #~ msgstr "_Použít" ibus-ibus-anthy-8b39a01/po/de.po000066400000000000000000000723241514660154000164460ustar00rootroot00000000000000# German translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Mike FABIAN , 2020, 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-04-02 03:07+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 5.10.4\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Japanische Inputmethode" #: 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 "Die Anthy Inputmethode ist designed um japanischen Text einzugeben." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "Eingabemethode" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japanisch" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Siehe die Upstream-Release-Liste." #: 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 "" "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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Einstellungen - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Inputmodus" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Inputmodus wechseln" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Halbbreite Katakana" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Lateinalphabet" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Vollbreites Lateinalphabet" #: 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 "Methode des Tippens" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Tippmethode wechseln" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Rōmaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Daumen-Shift" #: 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 "Segmentmodus" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Konvertierungsmodus wechseln" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Mehrere Segmente" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Einzelnes Segment" #: 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 "Sofortige Konvertierung (mehrere Segmente)" #: 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 "Sofortige Konvertierung (einzelnes Segment)" #: 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 "Wörterbuchmodus" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Wörterbuch wechseln" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Wörterbuch - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Wörterb." #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Wörterbücher konfigurieren" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Wörterbücher editieren" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Wörterbuchwerkzeug starten" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Wörter hinzufügen" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Wörter zum Wörterbuch hinzufügen" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Allgemein" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Postleitzahl Konvertierung" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Symbol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Alte Zeichenformen" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Nengō" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: 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 Einstellungen" #: 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 Engine konfigurieren" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Menü-Label" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Kommando" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Tastaturkürzel" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Beschreibung" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Eingebettet" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Einzeln" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Eingabezeichen" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Ausgabezeichen" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Eingabe" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Einzeln" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Links" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Rechts" #: setup/python2/main.py:587 setup/python3/main.py:591 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:592 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:593 setup/python3/main.py:599 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Voreinstellung" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Kana Tastentabelle individualisieren" #: 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 "_Kana Tastetabelle:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Japanische Tastaturbelegung" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "US amerikanische Tastaturbelegung" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Daumen-Shift Tastentabelle individualisieren" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Daumen-Shift Tastentabelle:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Einzelne _Ausgabezeichen" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Basis" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "NICOLA-J Tastenerweiterung" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "NICOLA-A Tastenerweiterung" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "NICOLA-F Tastenerweiterung" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J Tastenerweiterung" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A Tastenerweiterung" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F Tastenerweiterung" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J Tastenerweiterung" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A Tastenerweiterung" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F Tastenerweiterung" #: setup/python2/main.py:753 setup/python3/main.py:757 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:761 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:765 msgid "Your choosed file is a directory: " msgstr "Die gewählte Datei ist ein Directory: " #: setup/python2/main.py:765 setup/python3/main.py:769 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:778 msgid "Your file path is not good: " msgstr "Der Pfad der Datei ist nicht gut: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Die xml Enginedatei existiert nicht: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 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:1256 msgid "Please specify Input Chars" msgstr "Bitte Eingabezeichen spezifizieren" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Bitte Ausgabezeichen spezifizieren" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Bitte linke Daumen-Shift Zeichen spezifizieren" #: setup/python2/main.py:1272 setup/python3/main.py:1265 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:1278 setup/python3/main.py:1312 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:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "Die Datei existiert nicht: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Wörterbuchdatei öffnen" #: 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 "_Abbrechen" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Öffnen" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Wörterbuchdatei editieren" #: 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 "Die gewählte Datei ist nicht korrekt." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Das Systemwörterbuch kann nicht gelöscht werden." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Die Datei ist nicht gut." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Wörterbuchdatei ansehen" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Bitte eine Taste (oder eine Tastenkombination drücken)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 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:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Ungültiges Tastensymbol" #: 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 "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 " #~ msgid "Anthy Input Method" #~ msgstr "Anthy Inputmethode" ibus-ibus-anthy-8b39a01/po/el.po000066400000000000000000001045411514660154000164530ustar00rootroot00000000000000# Greek translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # dm3k , 2012 # Giannis Antypas , 2024. # Jim Spentzos , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: IBus-Anthy\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: 2026-02-21 11:58+0000\n" "Last-Translator: Jim Spentzos \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.16\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 "Μέθοδος thumb shift" #: 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 "Πίνακας πλήκτρων _Ρομάτζι:" #: 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 "Προσαρμογή πληκτρολογίου Thumb Shift" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "Πίνακας πλήκτρων _Thumb Shift:" #: 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 "Επεκτάσεις πλήκτρων 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 "Παρακαλώ προσδιορίστε τους χαρακτήρες αριστερού Thumb Shift" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Παρακαλώ προσδιορίστε τους χαρακτήρες δεξιού Thumb Shift" #: 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 "Άκυρο keysym" #: 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 δεν είναι έγκυρο" #: 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 "Πλήκτρο _αριστερού Thumb Shift:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Δεξί _Thumb 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 "" "Τα «~», «『», «¢», «£» και άλλα μπορούν να πληκτρολογηθούν με το πλήκτρο " "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 "" "Δε χρειάζεται να επαναδιαμορφώσετε τη διάταξη πληκτρολογίου συστήματος για " "τη «Διαρρύθμιση πρόσθετων πλήκτρων» αφού αυτή η επιλογή αλλάζει τη διάταξη " "μεθόδου εισαγωγής μόνο στην περίπτωση που ενεργοποιηθεί η μέθοδος εισαγωγής." #: 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 αφού αυτή η επιλογή αλλάζει τη " "διάταξη IM μόνο με το IM ενεργοποιημένο." #: 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 "Το Seion + Shift εισάγουν handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Πίνακας πλήκτρων Thumb _Shift:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Διάταξη 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 "Εντολή _επεξεργασίας λεξικού:" #: 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 "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 "_Ανανέωση" #: 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 "_αριστερό Thumb Shift" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_δεξί Thumb 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 "μνεία μεταφραστών" #~ msgid "Anthy Input Method" #~ msgstr "Μέθοδος εισαγωγής Anthy" #~ msgid "ibus is not running." #~ msgstr "Το ibus δεν εκτελείται." #~ msgid "Confirmation" #~ msgstr "Επιβεβαίωση" #~ msgid "You are about to close the setup dialog, is that OK?" #~ msgstr "Πρόκειται να κλείσετε το διάλογο ρύθμισης, είναι εντάξει;" #~ msgid "Notice!" #~ msgstr "Ειδοποίηση!" #~ msgid "" #~ "You are about to close the setup dialog without saving your changes, is " #~ "that OK?" #~ msgstr "" #~ "Πρόκειται να κλείσετε το διάλογο ρύθμισης χωρίς να αποθηκεύσετε τις " #~ "αλλαγές σας, είναι εντάξει;" #~ msgid "_Apply" #~ msgstr "_Εφαρμογή" ibus-ibus-anthy-8b39a01/po/es.po000066400000000000000000000731151514660154000164640ustar00rootroot00000000000000# Spanish translation of ibus-anthy. # Copyright (C) 2009-2026 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. # Javier Francisco , 2025. # Weblate Translation Memory , 2025. # "Fco. Javier F. Serrador" , 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-05-29 12:28+0000\n" "Last-Translator: \"Fco. Javier F. Serrador\" \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 5.11.4\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Método de entrada japonés" #: 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 "" "El método de entrada Anthy está diseñado para usarlo con texto japonés." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "método de entrada" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japonés" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Vea el listado de publicación última." #: 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 "" "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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Ajustes - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Modo de entrada" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Cambia el modo de entrada" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana de medio ancho" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latino" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latino ancho" #: 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 "Método mecanográfico" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Cambia el método de mecanografiado" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Cambio de pulgar" #: 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 "Modo de segmento" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Cambia el modo de conversión" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segmento múltiple" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmento individual" #: 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 "Conversión inmediata (segmento múltiple)" #: 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 "Conversión inmediata (segmento individual)" #: 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 "Modo de diccionario" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Cambia el diccionario" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Diccionario - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Diccionario" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Configura diccionarios" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Editar diccionarios" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Ejecuta la herramienta de diccionarios" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Añadir palabras" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Añade palabras al diccionario" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "General" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Conversión de código postal" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Símbolo" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Estilo antiguo" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Ajustes de 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 "Configura el motor Anthy de IBus" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Etiqueta de menú" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Comando" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Atajo" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Descripción" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Incl" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Indv" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Caracteres de entrada" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Caracteres de salida" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Entrada" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Individual" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Izquierdo" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Derecho" #: setup/python2/main.py:587 setup/python3/main.py:591 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:592 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:593 setup/python3/main.py:599 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Predeterminado" #: setup/python2/main.py:593 setup/python3/main.py:597 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:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Tabla de teclas _kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Teclado japonés" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Teclado de EEUU" #: setup/python2/main.py:600 setup/python3/main.py:604 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:605 msgid "_Thumb Shift Key Table:" msgstr "_Tabla de teclas de selección con pulgares:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Caracteres de _salida individuales" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Extensión de teclas NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Extensión de teclas NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Extensión de teclas NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Extensión de teclas FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Extensión de teclas FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Extensión de teclas FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Extensión de teclas FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Extensión de teclas FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Extensión de teclas FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 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:761 msgid "The file you have chosen does not exist: " msgstr "El archivo no existe: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Ha seleccionado un directorio: " #: setup/python2/main.py:765 setup/python3/main.py:769 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:778 msgid "Your file path is not good: " msgstr "Ruta incorrecta: " #: setup/python2/main.py:935 setup/python3/main.py:937 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:1044 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:1256 msgid "Please specify Input Chars" msgstr "Indique los caracteres de entrada" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Indique los caracteres de salida" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Indique los caracteres con pulgar izquierdo" #: setup/python2/main.py:1272 setup/python3/main.py:1265 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:1278 setup/python3/main.py:1312 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:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "El archivo no existe: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Abrir archivo de diccionario" #: 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 "_Cancelar" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Abrir" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Editar archivo de diccionario" #: 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 "_Aceptar" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "El archivo seleccionado no es válido." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "No puede eliminar el diccionario del sistema." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "El archivo no es correcto." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Ver archivos de diccionario" #: setup/python2/main.py:1644 setup/python3/main.py:1637 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:1645 setup/python3/main.py:1638 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:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Keysym incorrecto" #: 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 "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 "Ninguna" #: 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 "Cambio de Pulgar" #: 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" #~ msgid "Anthy Input Method" #~ msgstr "Método de entrada Anthy" ibus-ibus-anthy-8b39a01/po/et.po000066400000000000000000000575021514660154000164670ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Languages add-on , 2026. # Priit Jõerüüt , 2026. 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: 2026-01-17 17:58+0000\n" "Last-Translator: Priit Jõerüüt " "\n" "Language-Team: Estonian \n" "Language: et\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.15.2\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Jaapani sisestusmeetod" #: 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 sisestusmeetod on mõeldud jaapanikeelse teksti sisestuseks." #: 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-ibus-anthy-8b39a01/po/fi.po000066400000000000000000000717041514660154000164550ustar00rootroot00000000000000# Finnish translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Jan Kuparinen , 2021, 2023. # Ricky Tigg , 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-03-27 10:40+0000\n" "Last-Translator: Ricky Tigg \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 5.10.4\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Japanilainen syöttötapa" #: 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-syöttötapa on suunniteltu japaninkielisen tekstin kirjoittamiseen." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "syöttötapa" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japanilainen" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Katso ylävirran julkaisuluettelo." #: 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ä 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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Asetukset - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "syöttötila" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Vaihda syöttötila" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Puolileveä Katakana" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latina" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Leveä Latina" #: 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 "Kirjoitusmenetelmä" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Vaihda kirjoitusmenetelmä" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Peukalo muutos" #: 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 "Segmenttitila" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Vaihda muunnostila" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Useita segmenttejä" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Yksittäinen segmentti" #: 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 "Välitön muunnos (useita segmenttejä)" #: 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 "Välitön muunnos (yksittäinen segmentti)" #: 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 "Sanakirjatila" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Vaihda sanakirjaa" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Sanakirja - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "San" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Määritä sanastot" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Muokkaa sanakirjoja" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Käynnistä sanakirjatyökalu" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Lisää sanoja" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Lisää sanat sanakirjaan" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Yleiset" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Postinumeron muuntaminen" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Symboli" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Vanha kirjaimen tyyli" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Aikakausi" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: 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:n asettaminen" #: 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 "Aseta IBus Anthy:n moottori" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Valikon nimiö" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Komento" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Pikanäppäin" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Kuvaus" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Upot" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Ykst" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Syötä merkit" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Lähdön merkit" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Sisääntulo" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Yksittäinen" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Vasen" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Oikeudet" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Mukauta Romaji-avaintaulukko" #: 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 "_Romaji-avaintaulukko:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 msgid "_Output Chars" msgstr "_Lähdön merkit" #: 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 "Oletus" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Mukauta Kana-avaintaulukkoa" #: 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 "_Kana-avaintaulukko:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Japanilainen näppäimistöasettelu" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Yhdysvaltain näppäimistöasettelu" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Mukauta Thumb Shift -näppäintaulukkoa" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Thumb Shift -näppäintaulukko:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Yksittäiset _lähtömerkit" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Peruspaketit" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "NICOLA-J-avaimen jatke" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "NICOLA-A-avaimen jatke" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "NICOLA-F-avaimen jatke" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J -avaimen jatke" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A -avaimen jatke" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F -avaimen jatke" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J -avaimen jatke" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A -avaimen jatke" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F -avaimen jatke" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Valitsemasi tiedosto on jo lisätty: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "Valitsemaasi tiedostoa ei ole olemassa: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Valitsemasi kohde ei ole tiedosto vaan hakemisto: " #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Et voi lisätä sanakirjoja yksityiseen anthy-hakemistoon: " #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "Tiedostopolku ei kelpaa: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Moottorin xml-tiedostoa ei ole olemassa: " #: 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-näppäimistöasettelu on muutettu. Käynnistä ibus uudelleen ladataksesi " "asettelun uudelleen." #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Määritä syöttömerkit" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Määritä lähtömerkit" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Määritä vasemman Thumb:n vaihtomerkit" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Määritä oikean Thumb:n vaihtomerkit" #: 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 "Mukautettua avaintasi ei ole määritetty missään osiossa. Ehkä vika." #: 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 "Tiedostoasi ei ole olemassa: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Avaa sanakirjatiedosto" #: 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 "_Peru" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Avaa" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Muokkaa sanakirjatiedostoa" #: 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 "Valitsemasi tiedosto ei kelpaa." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Järjestelmäsanakirjaa ei voi poistaa." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Tiedostosi ei kelpaa." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Näytä sanakirjatiedosto" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Paina näppäintä (tai näppäinyhdistelmää)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "Valintaikkuna sulkeutuu, kun avain vapautetaan" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Epäkelvollinen keysym" #: 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 "Tämä keysym ei ole kelvollinen" #: 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 "Ei yhtään" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "FMV KB231 -avaimen jatke" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "FMV KB611 -avaimen jatke" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Säilytä numpadin koodit" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Muunna merkit" #: 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 "Muunna automaattisesti" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Sitoudu automaattisesti" #: 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 "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 "Asettaminen - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Syöttötila:" #: 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 "Muunnos_tila:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Alkuasetus" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Valikon näkyvyys tilakuvakkeessa" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "_Pisteen tyyli:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "_Symbolin tyyli:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Numpad _avaintyyppi:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Käyttäytyminen pisteellä:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Käyttäytyminen _keskittyessä:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Käyttäytyminen" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Ehdokas _ikkunan sivun koko:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Muunna _symbolit yhden sarakkeen leveydellä" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Muunna _luvut yhden sarakkeen leveydellä" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Muunna _välilyönnit yhden sarakkeen leveydellä" #: 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 "" "Vaihda \"Hiragana\" ja \"Latin\" Vaihto-näppäimellä ja Hiragana-Katakana -" "näppäimellä esimuokkaamisessa" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Muu" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Muunnos" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_Pikanäppäimen tyyppi:" #: 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 "Avainten sidonta" #: 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 "Näppäimistön asettelu:" #: 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 "_Vasen Thumb:n vaihtonäppäin:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "_Oikea Thumb:n vaihtonäppäin:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Säädä _syöttötavan asettelu järjestelmän näppäimistön asetteluksi" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Säädä IM-asettelu XKB-asetteluksi" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Syöttö_tapa-asettelu:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Käynnistä IBus uudelleen, kun muutat näppäimistön asettelua" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Käynnistä IBus uudelleen, kun vaihdat XKB:ta" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Lisäavainten järjestely:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "'~', '『', '¢', '£' ja niin edelleen voidaan tulostaa Thumb:n " "vaihtonäppäimellä" #: 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 "" "Sinun ei tarvitse määrittää uudelleen järjestelmän näppäimistöasettelua " "\"Lisäavainten järjestely\":ä varten, koska tämä vaihtoehto muuttaa " "syöttötavan asettelua vain, jos syöttötapa on käytössä." #: 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 "" "Sinun ei tarvitse määrittää XKB:ta uudelleen, koska tämä vaihtoehto muuttaa " "IMin asettelua vain IM ollessa päällä." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Ota puoliääninen merkki käyttöön vaihtonäppäimellä" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Vaihto voi tulostaa Handakuonin" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Thumb_vaihto -näppäintaulukko:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Thumb Vaihto -asettelu" #: 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 "_Muokkaa sanakirjakomentoa:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "_Lisää sanakomento:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Sanakirjan oletuskokoonpano" #: 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 "Voit muuttaa järjestystä kielipalkissa" #: 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 "Laajennetut sanakirjat" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Sanakirja" #: 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 "Muokkaa pikanäppäintä" #: 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 "_Vaihtele" #: 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 "_Vaihto" #: 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 "_Syöttömerkit" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "_Lähtömerkit" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "_Vasen Thumb Vaihto" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_Oikea Thumb Vaihto" #: 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 "_Lyhyt nimike:" #: 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 "_Käytä sanakirjaasi yksin vaihtaessasi sanakirjoja" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Upota sanakirjasi järjestelmäsanakirjaan" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Ota _käänteinen muunnos käyttöön" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Anthy-moottori IBus-syöttöalustalle" #: 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/" #~ msgid "Anthy Input Method" #~ msgstr "Anthyn syöttötapa" ibus-ibus-anthy-8b39a01/po/fr.po000066400000000000000000000751611514660154000164670ustar00rootroot00000000000000# French translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 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, 2025. # Weblate Translation Memory , 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-08-10 11:51+0000\n" "Last-Translator: Weblate Translation Memory \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.12.2\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Méthode de saisie du japonais" #: 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 "" "La méthode de saisie Anthy est conçue pour saisir des textes en japonais." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "Méthode de saisie" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japonais" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Consultez la liste upstream des versions." #: 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’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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Préférences – Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Mode de saisie" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Changer de mode de saisie" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana demi-chasse" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latin pleine largeur" #: 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 "Méthode de saisie" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Changer de méthode de saisie" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Thumb shift" #: 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 "Mode segments" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Changer de méthode de conversion" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segments multiples" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segments simples" #: 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 "Conversion immédiate (segments multiples)" #: 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 "Conversion immédiate (segments simples)" #: 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 "Mode dictionnaire" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Changer de dictionnaire" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Dictionnaire – Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Dico" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Configurer les dictionnaires" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Modifier les dictionnaires" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Lancer l’utilitaire de modification de dictionnaires" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Ajouter de nouveaux mots" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Ajouter de nouveaux mots au dictionnaire" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Paramètres généraux" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Conversion des codes postaux" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Symboles" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Anciens caractères" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Ère" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Émoticône" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Configuration d’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 "Configuration du moteur IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Étiquette du menu" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Commande" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Raccourci" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Description" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Incorporé" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Unique" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Caractère(s) d’entrée" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Caractère(s) de sortie" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Entrée" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Unique" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Gauche" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Droite" #: setup/python2/main.py:587 setup/python3/main.py:591 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:592 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:593 setup/python3/main.py:599 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Par défaut" #: setup/python2/main.py:593 setup/python3/main.py:597 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:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "Table des touches _Kana :" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Disposition clavier japonais" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Disposition clavier américain" #: setup/python2/main.py:600 setup/python3/main.py:604 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:605 msgid "_Thumb Shift Key Table:" msgstr "Table des touches de la méthode Thumb _Shift :" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Caractère(s) de s_ortie unique(s)" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Basique" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Extension de touches NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Extension de touches NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Extension de touches NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Extension de touches FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Extension de touches FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Extension de touches FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Extension de touches FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Extension de touches FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Extension de touches FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 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:761 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:765 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:769 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:778 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:937 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:1044 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:1256 msgid "Please specify Input Chars" msgstr "Veuillez spécifier les caractères d’entrée" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Veuillez spécifier les caractères de sortie" #: setup/python2/main.py:1269 setup/python3/main.py:1262 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:1265 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:1278 setup/python3/main.py:1312 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:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "Le fichier que vous avez sélectionné n’existe pas : " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Ouvrir un fichier de dictionnaire" #: 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 "A_nnuler" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Ouvrir" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Modifier le fichier de dictionnaire" #: 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 "Le fichier que vous avez sélectionné est incorrect." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Vous ne pouvez pas supprimer le dictionnaire système." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Le fichier que vous avez sélectionné n’est pas bon." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Voir le fichier de dictionnaire" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Veuillez appuyer sur une touche (ou une combinaison de touches)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 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:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "« keysym » invalide" #: 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 "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 " #~ msgid "Anthy Input Method" #~ msgstr "Méthode de saisie Anthy" ibus-ibus-anthy-8b39a01/po/hu.po000066400000000000000000000701441514660154000164700ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/ibus-anthy.pot000066400000000000000000000566551514660154000203360ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/id.po000066400000000000000000000710301514660154000164430ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Andika Triwidada , 2024, 2025. # Arif Budiman , 2026. 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: 2025-02-17 17:13+0900\n" "PO-Revision-Date: 2026-02-01 04:58+0000\n" "Last-Translator: Arif Budiman \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.15.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:21 msgid "input-method" msgstr "metode masukan" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Jepang" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Lihat daftar rilis hulu." #: 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 "" "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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Preferensi - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Mode masukan" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Beralih mode masukan" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana lebar setengah" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latin Lebar" #: 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 "Metode pengetikan" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Beralih metode pengetikan" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Shift jempol" #: 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 "Mode segmen" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Beralih mode konversi" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Beberapa segmen" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmen tunggal" #: 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 "Konversi langsung (beberapa segmen)" #: 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 "Konversi langsung (segmen tunggal)" #: 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 "Mode kamus" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Beralih kamus" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: 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:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Kamus" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Mengonfigurasi kamus" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Sunting kamus" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Luncurkan alat kamus" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Tambah kata" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Tambah kata ke kamus" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Umum" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Konversi Kode Pos" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Simbol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Gaya Karakter Lama" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Penyiapan 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 "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 "Tidak ada" #: 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." #~ msgid "Anthy Input Method" #~ msgstr "Metode Masukan Anthy" ibus-ibus-anthy-8b39a01/po/it.po000066400000000000000000000715671514660154000165020ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Salvatore Cocuzza , 2025. 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-04-28 13:53+0000\n" "Last-Translator: Salvatore Cocuzza \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.11\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Metodo di input giapponese" #: 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 "" "Il metodo di input Anthy è progettato per l'inserimento di testo giapponese." #: 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 "" "I metodi di input sono sistemi di digitazione che consentono agli utenti di " "inserire lingue complesse. Sono necessari perché queste contengono troppi " "caratteri per essere semplicemente disposti su una tastiera tradizionale." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "input-method" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Giapponese" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Vedere l'elenco delle versioni upstream." #: 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 "" "Impossibile abilitare Anthy.\n" "La fine del contenuto del file %s/last-record2_default.utf8 nella propria " "directory home non è '\\n" "'. Cioè, non è nel formato di testo corretto.\n" "Si prega di correggere il file o rimuoverlo manualmente e riavviare 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 "Preferenze - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Modalità di input" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Cambia modalità di input" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana a mezza larghezza" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latino" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latino largo" #: 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 "Metodo di digitazione" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Cambia metodo di digitazione" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Thumb shift" #: 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 "Modalità segmento" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Cambia modalità di conversione" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segmento multiplo" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmento singolo" #: 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 "Conversione immediata (segmento multiplo)" #: 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 "Conversione immediata (segmento singolo)" #: 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 "Modalità dizionario" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Cambia dizionario" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Dizionario - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Diz" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Configura dizionari" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Modifica dizionari" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Avvia lo strumento dizionario" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Aggiungi parole" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Aggiungi parole al dizionario" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Generale" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Conversione codice postale" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Simbolo" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Stile carattere vecchio" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Configurazione 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 "Configura il motore IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Etichetta menu" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Comando" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Scorciatoia" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Descrizione" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Incorp" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Sing" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Caratteri input" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Caratteri output" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Input" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Singolo" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Sinistro" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Destro" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Personalizza tabella tasti 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 "Tabella tasti _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 "Caratteri _output" #: 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 "Predefinito" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Personalizza tabella tasti 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 "Tabella tasti _Kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Layout tastiera giapponese" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Layout tastiera USA" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Personalizza tabella tasti Thumb Shift" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "Tabella tasti _Thumb Shift:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Caratteri _output singoli" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Estensione tasti NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Estensione tasti NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Estensione tasti NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Estensione tasti FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Estensione tasti FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Estensione tasti FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Estensione tasti FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Estensione tasti FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Estensione tasti FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Il file scelto è già stato aggiunto: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "Il file scelto non esiste: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Il file scelto è una directory: " #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Non è possibile aggiungere dizionari nella directory privata di anthy: " #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "Il percorso del file non è valido: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Il file xml del motore non esiste: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Il layout della tastiera Anthy è stato modificato. Riavviare ibus per " "ricaricare il layout." #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Specificare i caratteri di input" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Specificare i caratteri di output" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Specificare i caratteri Thumb Shift sinistro" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Specificare i caratteri Thumb Shift destro" #: 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 "" "Il tasto personalizzato non è assegnato in nessuna sezione. Potrebbe essere " "un 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 "Il file non esiste: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Apri file dizionario" #: 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 "_Annulla" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Apri" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Modifica file dizionario" #: 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 "Il file scelto non è corretto." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Non è possibile eliminare il dizionario di sistema." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Il file non è valido." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Visualizza file dizionario" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Premere un tasto (o una combinazione di tasti)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "La finestra verrà chiusa al rilascio del tasto" #: 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 non valido" #: 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 "Questo keysym non è valido" #: 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 "Nessuno" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Estensione tasti FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Estensione tasti FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Mantieni codici tastierino numerico" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Converti caratteri" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Non fare nulla" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Converti automaticamente" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Conferma automaticamente" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Pulisci" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Conferma" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Mantieni" #: 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 "Configurazione - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "_Modalità di input:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Metodo di digitazione:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "_Modalità di conversione:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Impostazione iniziale" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Visibilità menu sull'icona di stato" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Stile _punto:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Stile simbo_lo:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Tipo tasto _tastierino numerico:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Comportamento al punto:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Comportamento alla _perdita di focus:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Comportamento" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Dimensione pagina finestra _candidati:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Converti _simboli con larghezza a una colonna" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Converti _numeri con larghezza a una colonna" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Con_verti spazi con larghezza a una colonna" #: 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 "" "Cam_bia tra “Hiragana” e “Latino” con tasto Maiusc e tasto Hiragana–Katakana " "in pre-edit" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Altro" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Conversione" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "_Tipo scorciatoia:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "Prede_finito" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Modifica" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Associazione tasti" #: 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 "_Layout tastiera:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Layout tastiera" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Metodo di digitazione" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Tasto _Thumb Shift sinistro:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Tasto _Thumb Shift destro:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "Adatta layout _metodo di input al layout tastiera di sistema" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Adatta layout IM al layout XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "_Layout metodo di input:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Riavviare IBus quando si cambia il layout della tastiera" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Riavviare IBus quando si cambia XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "Disposizione tasti _aggiuntiva:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "'~', '『', '¢', '£' e così via possono essere prodotti con il tasto 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 "" "Non è necessario riconfigurare il layout della tastiera di sistema per " "\"Disposizione tasti aggiuntiva\" poiché questa opzione modifica il layout " "del metodo di input solo quando il metodo di input è attivo." #: 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 "" "Non è necessario riconfigurare XKB poiché questa opzione modifica il layout " "IM solo con l'IM attivo." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Abilita segno sonoro semi-sonorizzato con tasto Maiusc" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Maiusc può produrre Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Tabella tasti _Thumb Shift:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Layout 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 "Comando _modifica dizionario:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Comando _aggiungi parola:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Configurazione dizionario predefinita" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Visualizza" #: 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 "_Aggiungi" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Elimina" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "S_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 "È possibile cambiare l'ordine sulla barra della lingua" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Giù" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Dizionari estesi" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Dizionario" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Informazioni" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Chiudi" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Modifica scorciatoia" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Codice tasto:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modificatore:" #: 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_ntrollo" #: setup/python2/setup.ui:2068 setup/python3/setup.ui:2068 msgid "_Shift" msgstr "_Maiusc" #: setup/python2/setup.ui:2116 setup/python3/setup.ui:2116 msgid "_Refresh" msgstr "_Aggiorna" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Caratteri _input" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Caratteri _output" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Thumb Shift _sinistro" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Thumb Shift _destro" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Rimuovi" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "Etichetta _breve:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Descrizione:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Usa il tuo dizionario da solo cambiando dizionari" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Incorpora il tuo dizionario nel dizionario di sistema" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Abilita la conversione _inversa" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Il motore Anthy per la piattaforma di input IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "translator_credits" ibus-ibus-anthy-8b39a01/po/ja.po000066400000000000000000000740321514660154000164460ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/ka.po000066400000000000000000000637041514660154000164530ustar00rootroot00000000000000# Georgian translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Temuri Doghonadze , 2022, 2025, 2026. # Weblate Translation Memory , 2024, 2025, 2026. 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 17:13+0900\n" "PO-Revision-Date: 2026-01-21 11:58+0000\n" "Last-Translator: Temuri Doghonadze \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.15.2\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 "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 "Right" #: 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 "არასწორი keysym" #: 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 "" #: 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 "_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 "" #: 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-ibus-anthy-8b39a01/po/kab.po000066400000000000000000000616561514660154000166210ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # ButterflyOfFire , 2024, 2025, 2026. # Weblate Translation Memory , 2025. # Moonshadow , 2025. 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: 2025-02-17 17:13+0900\n" "PO-Revision-Date: 2026-02-09 17:58+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.15.2\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Tarrayt n usekcem s japunit" #: 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 "tarrayt n usekcem" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Ajapuni" #: 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 "Imenyafen – Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 msgid "Configure Anthy" msgstr "Swel 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 "Tarrayt n usekcem" #: 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 "Talatinit" #: 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 "Tarrayt n usekcem" #: 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 "Askar n umawal" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Beddel asegzawal" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Amawal - 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 "Swel imawalen" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Ẓreg imawalen" #: 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 "Rnu awalen imaynuten" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Rnu awalen ar umawal" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Amatu" #: 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 "Izamulen" #: 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 "Imujit" #: 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 "Anzaḍ" #: 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 "Asuf" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Azelmaḍ" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Ayeffus" #: 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 "Taneɣruft n unasiw ajapuni" #: 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 "Afaylu i tferneḍ ulac-it: " #: 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 "Afaylu-inek·inem ulac-it: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Ldi-d afaylu n umawal" #: 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 "Semmet (_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 "Senfel afaylu n umawal" #: 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 "Afaylu-inek·inem ufrin ur iṣeḥḥa ara." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Ur tezmireḍ ara ad tsefḍeḍ asegzawal n unagraw." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Ur yelhi ara ufaylu-inek·inem." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Wali afaylu n umawal" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Ttxil-k sit ɣef tqeffalt (neɣ taggayt n tqeffalin)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "Adiwenni ad yemdel mi ara d-teffeɣ tqeffalt" #: 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 yiwet" #: 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 "A_naw n usekcem:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "_Tarrayt n usekcem:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "Askar n udi_wenni:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Tawila tamezwarut" #: 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 "Wayeḍ" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Aselket" #: 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 "Taneɣru_ft n unasiw:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Taneɣruft n unasiw" #: 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 "_Wali" #: 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 "_Usawen" #: 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 "Ukessar (_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 "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 "Ẓreg anegzum" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Angal n tqeffalt:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Asenfal:" #: 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 "Smi_ren" #: 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-ibus-anthy-8b39a01/po/kk.po000066400000000000000000000777331514660154000164740ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Languages add-on , 2026. # Baurzhan Muftakhidinov , 2026. 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: 2026-02-07 17:58+0000\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh \n" "Language: kk\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.15.2\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 "Thumb shift" #: 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 "_Ромаджи пернелер кестесі:" #: 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 "Thumb Shift пернелер кестесін теңшеу" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Thumb Shift пернелер кестесі:" #: 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 "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 "Сол жақ Thumb Shift таңбаларын көрсетіңіз" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Оң жақ Thumb Shift таңбаларын көрсетіңіз" #: 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 "Өзіндік пернеңіз ешбір бөлімге тағайындалмаған. Мүмкін бұл қате (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 "Файлыңыз жоқ: " #: 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 "Жарамсыз keysym" #: 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 жарамсыз" #: 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 "_Сол жақ Thumb Shift пернесі:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Оң жақ _Thumb 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 "Енгізу әдісі жаймасын 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 "XKB өзгерткенде 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 "" "'~', '『', '¢', '£' және т.б. таңбаларды 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 "" "«Қосымша пернелер орналасуы» үшін жүйелік пернетақта жаймасын қайта " "баптаудың қажеті жоқ, себебі бұл опция енгізу әдісі жаймасын тек ол қосылып " "тұрғанда ғана өзгертеді." #: 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 "Жартылай дауысты дыбыс белгісін іске қ_осу" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift арқылы Handakuon шығаруға болады" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Thumb _Shift пернелер кестесі:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "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 "Сөздікті т_үзету командасы:" #: 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 "_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 "_Сол жақ Thumb Shift" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "_Оң жақ Thumb 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 "IBus енгізу платформасына арналған Anthy қозғалтқышы" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Baurzhan Muftakhidinov " ibus-ibus-anthy-8b39a01/po/ko.po000066400000000000000000000716441514660154000164730ustar00rootroot00000000000000# Korean translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # simmon , 2021. # 김인수 , 2022, 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-03-28 11:09+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 5.10.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 "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 "_로마지 키 테이블:" #: 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 "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 "_엄지 쉬프트 키 테이블:" #: 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 "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 "KMV 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 "_취소" #: 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 "확인(_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 "잘못된 keysym" #: 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은 유효하지 않습니다" #: 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 " #~ msgid "Anthy Input Method" #~ msgstr "Anthy 입력 방법" ibus-ibus-anthy-8b39a01/po/pa.po000066400000000000000000000601311514660154000164470ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Languages add-on , 2026. # A S Alam , 2026. 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: 2026-02-11 11:58+0000\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi \n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.15.2\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 "ਵੇਖੋ(_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 "" #: 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 "" #: 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 "ਹਟਾਓ(_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 "" #: 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-ibus-anthy-8b39a01/po/pt.po000066400000000000000000000607141514660154000165010ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/pt_BR.po000066400000000000000000000736421514660154000170700ustar00rootroot00000000000000# Portuguese (Brazil) translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 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, 2026. # 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: 2025-02-17 17:13+0900\n" "PO-Revision-Date: 2026-02-17 18:58+0000\n" "Last-Translator: Rafael Fontenelle \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 5.16\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Método de entrada japonês" #: 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 "O método de entrada Anthy é projetado para digitar texto em japonês." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "método de entrada" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japonês" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Veja a lista de lançamentos." #: 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 "" "Não foi possível ativar o Anthy.\n" "O final do conteúdo do arquivo %s/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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Preferências - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Modo de entrada" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Alternar o modo de entrada" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana meia largura" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latim" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latim amplo" #: 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 "Método de digitação" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Alternar método de digitação" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Thumb shift" #: 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 "Modo de segmento" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Alternar modo de conversão" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segmento múltiplo" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segmento único" #: 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 "Conversão imediata (segmento múltiplo)" #: 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 "Conversão imediata (segmento único)" #: 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 "Modo dicionário" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Alternar dicionário" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Dicionário - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Dic" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Configurar dicionários" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Editar dicionários" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Iniciar a ferramenta de dicionário" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Adicionar palavras" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Adicionar palavras no dicionário" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Geral" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Conversão de código postal" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Símbolo" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Estilo de caractere antigo" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Configuração de 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 "Configure o motor de IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Rótulo de menu" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Comando" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Atalho" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Descrição" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Embt" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Uni" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Caracteres de entrada" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Caracteres de saída" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Entrada" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Único" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Esquerda" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Direita" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Personalizar tabela de teclas Romanji" #: 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 "Tabela de teclas _Romanji:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 msgid "_Output Chars" msgstr "Caracteres 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Padrão" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Personalizar tabela de teclas 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 "Tabela de teclas _Kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Layout do idioma japonês" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Layout de teclado dos EUA" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Personalizar teclado de teclas Thumb Shift" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "Tabelas de teclas _Thumb Shift:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Caracteres de _saída única" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Base" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Extensão de teclas NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Extensão de teclas NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Extensão de teclas NICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Extensão de teclas FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Extensão de teclas FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Extensão de teclas FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Extensão de teclas FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Extensão de teclas FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Extensão de teclas FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Seu arquivo escolhido já foi adicionado: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "O arquivo que você escolheu não existe: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Seu arquivo escolhido é um diretório: " #: setup/python2/main.py:765 setup/python3/main.py:769 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:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "O arquivo do seu caminho não é válido: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "O arquivo de xml de motor não existe: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 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:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Especifique os caracteres de entrada" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Especifique os caracteres de saída" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Especifique caracteres de Thumb Shift esquerdo" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Especifique caracteres de Thumb Shift direito" #: 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 "" "Sua tecla personalizada não está atribuída a uma seção. Talvez seja um 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 "Seu arquivo não existe: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Abrir arquivo de dicionário" #: 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 "_Cancelar" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Abrir" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Editar arquivo de dicionário" #: 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 "Seu arquivo escolhido não está correto." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Você não pode excluir o dicionário de sistema." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Seu arquivo não está correto." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Ver arquivo de dicionário" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Pressione uma tecla (ou uma combinação de teclas)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 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:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "símbolo de tecla (keysym) inválido" #: 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 "Este símbolo de teclas não é 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 "Nenhum" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Extensão de teclas FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Extensão de teclas FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Manter código de teclado numérico" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Converter caracteres" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Fazer nada" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Converter automaticamente" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Enviar automaticamente" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Limpar" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Enviar" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Manter" #: 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 "Configuração - 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 de _digitação:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "_Modo de conversão:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Configuração inicial" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Visibilidade do menu no ícone de status" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Estilo do _ponto:" #: 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 de teclado _numérico:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "C_omportamento no ponto:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Comportamento ao retirar _foco:" #: setup/python2/setup.ui:595 setup/python3/setup.ui:595 msgid "Behavior" msgstr "Comportamento" #: setup/python2/setup.ui:629 setup/python3/setup.ui:629 msgid "Candidate _Window Page Size:" msgstr "Tamanho da página da _janela de candidatos:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Converter _símbolos com a largura de uma coluna" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Converter _números com a largura de uma coluna" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Con_verter espaços com a largura de uma coluna" #: 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 "" "Al_ternar \"Hiragana\" e \"Latim\" com a tecla shift com a tecla Hiragana–" "Katakana na pré-edição" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Outro" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Conversão" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Atalhos de _teclado:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_Padrão" #: 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 "Associações de tecla" #: 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 "_Layout de teclado:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Layout de teclado" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Método de digitação" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Tecla Thumb Shift _esquerda:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Tecla Thumb Shift _direita:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 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:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Ajustar layout do IM para layout do XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Layout do _método de entrada:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Reiniciar o IBus quando você alterar o layout de teclado" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Reiniciar IBus quando você alterar o XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "Arranjo de Teclas _Adicional:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 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: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 "" "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: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 "" "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:1437 setup/python3/setup.ui:1437 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:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift pode emitir Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Tabela de teclas Thumb _Shift:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Layout de 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 "Comando de _Editar de Dicionário:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Comando de _adicionar palavra:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Configuração de dicionário padrão" #: 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 "_Adicionar" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "_Excluir" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "A_cima" #: 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 "Você pode alterar a ordem na barra de idiomas" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "A_baixo" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Dicionários estendidos" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Dicionário" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Sobre" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "_Fechar" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Editar atalho" #: 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_lternar" #: 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 "Atualiza_r" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Caracteres de e_ntrada" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Caracteres de _saída" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Thumb Shift _esquerdo" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Thumb Shift _direito" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Remover" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "Etiqueta _curta:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Descrição:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "_Usar seu dicionário sozinho com troca de dicionários" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "_Embutir seu dicionário no dicionário do sistema" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Ativar a conversão _inversa" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 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:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Rafael Fontenelle " #~ msgid "Anthy Input Method" #~ msgstr "Método de entrada Anthy" #~ msgid "ibus is not running." #~ msgstr "ibus não está em execução." #~ msgid "Confirmation" #~ msgstr "Confirmação" #~ 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?" #~ msgid "Notice!" #~ msgstr "Atenção!" #~ 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?" #~ msgid "_Apply" #~ msgstr "_Aplicar" ibus-ibus-anthy-8b39a01/po/ro.po000066400000000000000000000736001514660154000164740ustar00rootroot00000000000000# Source translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Languages add-on , 2026. # Remus-Gabriel Chelu , 2026. 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: 2026-02-09 17:58+0000\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" "X-Generator: Weblate 5.15.2\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Metoda de introducere japoneză" #: 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 "" "Metoda de introducere Anthy este concepută pentru introducerea textului în " "limba japoneză." #: 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 "" "Metodele de introducere sunt sisteme de tastare care permit utilizatorilor " "să introducă limbi complexe. Acestea sunt necesare deoarece conțin prea " "multe caractere pentru a putea fi dispuse pe o tastatură tradițională." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "metoda-de-introducere" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japoneză" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Consultați lista versiunilor anterioare." #: 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 "" "Nu s-a putut activa Anthy.\n" "Sfârșitul conținutului fișierului %s/last-record2_default.utf8 din " "directorul dvs. personal nu este „\\n”. Adică formatul textului nu este " "corect.\n" "Vă rugăm să corectați fișierul sau să îl ștergeți manual și să reporniți " "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 "Preferințe - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 msgid "Configure Anthy" msgstr "Configurează 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 "Modul de introducere" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Comută modul de introducere" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Katakana cu lățime medie" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latină" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Latină lată" #: 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 "Metoda de tastare" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Comută metoda de tastare" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Schimbare cu degetul mare (pe tastaturile japoneze)" #: 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 "Modul segment" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Comută modul de conversie" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Segmente multiple" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Segment unic" #: 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 "Conversie imediată (segmente múltiple)" #: 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 "Conversie imediată (segment unic)" #: 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 "Modul dicționar" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Comută dicționarul" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Dicționar - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Dicț." #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Configurează dicționarele" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Editează dicționarele" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Lansează instrumentul de dicționar" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Adaugă cuvinte" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Adaugă cuvinte la dicționar" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Generale" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Conversia codului poștal" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Simbol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Stilul caracterelor vechi" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: setup/python2/ibus-setup-anthy.desktop.in.in:2 #: setup/python3/ibus-setup-anthy.desktop.in.in:2 msgid "IBus Anthy Setup" msgstr "Configurare 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 "Configurarea motorului IBus Anthy" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Etichetă meniu" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Comandă" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Comandă rapidă" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Descriere" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Înglobat" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Unic" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Caractere intrare" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Caractere ieșire" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Intrare" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Unic" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Stânga" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Dreapta" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Personalizează tabelul de taste 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 "Tabelul de taste _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 "Caractere _ieșire" #: 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 "Implicit" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Personalizează tabelul de taste 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 "Tabelul de taste _Kana:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Aranjamentul de tastatură Japoneză" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Aranjamentul de tastatură din SUA" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Personalizează tabelul de taste pentru metoda Thumb Shift" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "Tabelul de taste pentru metoda _Thumb Shift:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Caractere _ieșire unice" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Baza" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "Extensia de taste NICOLA-J" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "Extensia de taste NICOLA-A" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "Extensia de taste NICOLA-JNICOLA-F" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "Extensia de taste FMV KB231-J" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "Extensia de taste FMV KB231-A" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "Extensia de taste FMV KB231-F" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "Extensia de taste FMV KB611-J" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "Extensia de taste FMV KB611-A" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "Extensia de taste FMV KB611-F" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Fișierul ales a fost deja adăugat: " #: setup/python2/main.py:757 setup/python3/main.py:761 msgid "The file you have chosen does not exist: " msgstr "Fișierul pe care l-ați ales nu există: " #: setup/python2/main.py:761 setup/python3/main.py:765 msgid "Your choosed file is a directory: " msgstr "Fișierul ales este un director: " #: setup/python2/main.py:765 setup/python3/main.py:769 msgid "You cannot add dictionaries in the anthy private directory: " msgstr "Nu puteți adăuga dicționare în directorul privat anthy: " #: setup/python2/main.py:774 setup/python3/main.py:778 msgid "Your file path is not good: " msgstr "Ruta către fișierul dvs. nu este corectă: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Fișierul xml al motorului nu există: " #: setup/python2/main.py:1051 setup/python3/main.py:1044 msgid "" "Anthy keyboard layout is changed. Please restart ibus to reload the layout." msgstr "" "Aranjamentul tastaturii Anthy a fost modificată. Vă rugăm să reporniți ibus " "pentru a reîncărca aranjamentul." #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Specificați caracterele de intrare" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Specificați caracterele de ieșire" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Specificați caracterele de schimbare cu degetul mare stâng" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Specificați caracterele de schimbare cu degetul mare drept" #: 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 "" "Tasta personalizată nu este atribuită în nicio secțiune. Poate fi vorba de o " "eroare." #: 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 "Fișierul dvs. nu există: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Deschide fișierul dicționar" #: 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 "_Renunță" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Deschide" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Editează fișierul dicționar" #: 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 "Fișierul ales nu este corect." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Nu puteți șterge dicționarul sistemului." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Fișierul dvs. nu este valid." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Vizualizați fișierul dicționar" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Apăsați o tastă (sau o combinație de taste)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "" "Dialogul se va închide când tasta este eliberată (ultima tastă în cazul " "combinației de taste)" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Simbolul de tastă(keysym) nu este 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 "Acest simbol de tastă(keysym) nu este 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 "Niciuna" #: setup/python2/setup.ui:58 setup/python3/setup.ui:58 msgid "FMV KB231 key extension" msgstr "Extensia de taste FMV KB231" #: setup/python2/setup.ui:61 setup/python3/setup.ui:61 msgid "FMV KB611 key extension" msgstr "Extensia de taste FMV KB611" #: setup/python2/setup.ui:106 setup/python3/setup.ui:106 msgid "Keep numpad codes" msgstr "Păstrează codurile tastaturii numerice" #: setup/python2/setup.ui:109 setup/python3/setup.ui:109 msgid "Convert characters" msgstr "Convertire caractere" #: setup/python2/setup.ui:151 setup/python3/setup.ui:151 msgid "Do nothing" msgstr "Nu face nimic" #: setup/python2/setup.ui:154 setup/python3/setup.ui:154 msgid "Automatically convert" msgstr "Conversie automată" #: setup/python2/setup.ui:157 setup/python3/setup.ui:157 msgid "Automatically commit" msgstr "Confirmare automată" #: setup/python2/setup.ui:167 setup/python3/setup.ui:167 msgid "Clear" msgstr "Șterge" #: setup/python2/setup.ui:170 setup/python3/setup.ui:170 msgid "Commit" msgstr "Confirmare" #: setup/python2/setup.ui:173 setup/python3/setup.ui:173 msgid "Hold" msgstr "Menține" #: 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 "Configurare - IBus-Anthy" #: setup/python2/setup.ui:233 setup/python3/setup.ui:233 msgid "_Input Mode:" msgstr "Modul de _introducere:" #: setup/python2/setup.ui:263 setup/python3/setup.ui:263 msgid "_Typing Method:" msgstr "Metoda de _tastare:" #: setup/python2/setup.ui:297 setup/python3/setup.ui:297 msgid "Conversion _Mode:" msgstr "_Modul de conversie:" #: setup/python2/setup.ui:332 setup/python3/setup.ui:332 msgid "Initial Setting" msgstr "Configurarea inițială" #: setup/python2/setup.ui:381 setup/python3/setup.ui:381 msgid "Menu Visibility on Status Icon" msgstr "Vizibilitatea meniului în pictograma de stare" #: setup/python2/setup.ui:428 setup/python3/setup.ui:428 msgid "_Period Style:" msgstr "Stilul de _punctuație:" #: setup/python2/setup.ui:441 setup/python3/setup.ui:441 msgid "Symbo_l Style:" msgstr "Stilul simbo_lului:" #: setup/python2/setup.ui:456 setup/python3/setup.ui:456 msgid "Numpad _Key Type:" msgstr "Tipul _tastei tastaturii numerice:" #: setup/python2/setup.ui:526 setup/python3/setup.ui:526 msgid "_Behavior on Period:" msgstr "_Comportamentul în timpul punctuației:" #: setup/python2/setup.ui:541 setup/python3/setup.ui:541 msgid "Behavior on _Focus Out:" msgstr "Comportamentul la pierderea _focalizării:" #: 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 "Dimensiunea _ferestrei listei de variante:" #: setup/python2/setup.ui:659 setup/python3/setup.ui:659 msgid "Convert _symbols with the one column width" msgstr "Convertește s_imbolurile cu lățimea unei coloane" #: setup/python2/setup.ui:675 setup/python3/setup.ui:675 msgid "Convert _numbers with the one column width" msgstr "Convertește _numereele cu lățimea unei coloane" #: setup/python2/setup.ui:691 setup/python3/setup.ui:691 msgid "Con_vert spaces with the one column width" msgstr "Con_vertește spațiile cu lățimea unei coloane" #: 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 "" "Comutați între „Hiragana” și „Latin” cu tasta Shift și tasta Hiragana–" "Katakana în pre-editare" #: setup/python2/setup.ui:726 setup/python3/setup.ui:726 msgid "Other" msgstr "Alta" #: setup/python2/setup.ui:742 setup/python3/setup.ui:742 msgid "Conversion" msgstr "Conversie" #: setup/python2/setup.ui:764 setup/python3/setup.ui:764 msgid "_Shortcut Type:" msgstr "Tipul comenzii _rapide:" #: setup/python2/setup.ui:831 setup/python3/setup.ui:831 msgid "De_fault" msgstr "_Implicit" #: setup/python2/setup.ui:847 setup/python2/setup.ui:1763 #: setup/python3/setup.ui:847 setup/python3/setup.ui:1763 msgid "_Edit" msgstr "_Editează" #: setup/python2/setup.ui:873 setup/python3/setup.ui:873 msgid "Key Binding" msgstr "Combinația de taste" #: 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 "Aranjamentu_l tastaturii:" #: setup/python2/setup.ui:1108 setup/python3/setup.ui:1108 msgid "Keyboard layout" msgstr "Aranjamentul tastaturii" #: setup/python2/setup.ui:1127 setup/python3/setup.ui:1127 msgid "Typing Method" msgstr "Metoda de tastare" #: setup/python2/setup.ui:1168 setup/python3/setup.ui:1168 msgid "_Left Thumb Shift Key:" msgstr "Tasta de schimbare cu degetul mare _stâng:" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "Tasta de schimbare cu degetul mare d_rept:" #: setup/python2/setup.ui:1262 setup/python3/setup.ui:1262 msgid "Adjust _input method layout to system keyboard layout" msgstr "" "Ajustează aranjamentul metodei de _introducere la aranjamentul tastaturii " "sistemului" #: setup/python2/setup.ui:1263 setup/python3/setup.ui:1263 msgid "Adjust IM layout to XKB layout" msgstr "Ajustează aranjamentul IM la aranjamentul XKB" #: setup/python2/setup.ui:1287 setup/python3/setup.ui:1287 msgid "Input _Method Layout:" msgstr "Aranjamentul _metodei de introducere:" #: setup/python2/setup.ui:1339 setup/python3/setup.ui:1339 msgid "Restart IBus when you change the keyboard layout" msgstr "Repornește IBus când schimbați aranjamentul tastaturii" #: setup/python2/setup.ui:1340 setup/python3/setup.ui:1340 msgid "Restart IBus when you change XKB" msgstr "Repornește IBus când schimbați configurația XKB" #: setup/python2/setup.ui:1365 setup/python3/setup.ui:1365 msgid "_Additional Key Arrangement:" msgstr "_Aranjament suplimentar al tastelor:" #: setup/python2/setup.ui:1377 setup/python3/setup.ui:1377 msgid "'~', '『', '¢', '£' and so on can be output with Thumb Shift key" msgstr "" "„~”, „『”, „¢”, „£” și așa mai departe pot fi afișate cu tasta 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 "" "Nu este necesar să reconfigurați aranjamentul tastaturii sistemului pentru «" "Aranjamentul suplimentar al tastelor», deoarece această opțiune modifică " "aranjamentul metodei de introducere numai în cazul în care metoda de " "introducere este activată." #: 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 "" "Nu este necesar să reconfigurați XKB, deoarece această opțiune modifică " "aranjamentul IM numai când IM este activat." #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "_Activează semnalul sonor semi-voce cu tasta «Shift»" #: setup/python2/setup.ui:1438 setup/python3/setup.ui:1438 msgid "Seion + Shift can output Handakuon" msgstr "Seion + Shift poate genera Handakuon" #: setup/python2/setup.ui:1463 setup/python3/setup.ui:1463 msgid "Thumb _Shift Key Table:" msgstr "Tabelul de taste pentru metoda Thumb _Shift:" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "Aranjamentul pentru metoda Thumb Shift" #: setup/python2/setup.ui:1522 setup/python3/setup.ui:1522 msgid "Thumb Shift" msgstr "Schimbare cu degetul mare (pe tastaturile japoneze)" #: setup/python2/setup.ui:1560 setup/python3/setup.ui:1560 msgid "_Edit Dictionary Command:" msgstr "Comanda de _editare a dicționarului:" #: setup/python2/setup.ui:1611 setup/python3/setup.ui:1611 msgid "_Add Word Command:" msgstr "Comanda de adăugare a unui cuvânt:" #: setup/python2/setup.ui:1680 setup/python3/setup.ui:1680 msgid "Default Dictionary Configuration" msgstr "Configurația implicită a dicționarului" #: setup/python2/setup.ui:1731 setup/python3/setup.ui:1731 msgid "_View" msgstr "_Vizualizare" #: 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 "_Adaugă" #: setup/python2/setup.ui:1779 setup/python2/setup.ui:2132 #: setup/python3/setup.ui:1779 setup/python3/setup.ui:2132 msgid "_Delete" msgstr "Șt_erge" #: setup/python2/setup.ui:1808 setup/python3/setup.ui:1808 msgid "_Up" msgstr "S_us" #: 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 "Puteți schimba ordinea în bara de limbă" #: setup/python2/setup.ui:1825 setup/python3/setup.ui:1825 msgid "_Down" msgstr "_Jos" #: setup/python2/setup.ui:1852 setup/python3/setup.ui:1852 msgid "Extended Dictionaries" msgstr "Dicționare extinse" #: setup/python2/setup.ui:1867 setup/python3/setup.ui:1867 msgid "Dictionary" msgstr "Dicționar" #: setup/python2/setup.ui:1888 setup/python3/setup.ui:1888 msgid "About" msgstr "Despre" #: setup/python2/setup.ui:1908 setup/python2/setup.ui:2418 #: setup/python3/setup.ui:1908 setup/python3/setup.ui:2418 msgid "_Close" msgstr "În_chide" #: setup/python2/setup.ui:1938 setup/python3/setup.ui:1938 msgid "Edit Shortcut" msgstr "Editați o comandă rapidă" #: setup/python2/setup.ui:1980 setup/python3/setup.ui:1980 msgid "Key Code:" msgstr "Codul tastei:" #: setup/python2/setup.ui:2028 setup/python3/setup.ui:2028 msgid "Modifier:" msgstr "Modificator:" #: setup/python2/setup.ui:2042 setup/python3/setup.ui:2042 msgid "A_lternate" msgstr "A_lternatIivă" #: 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 "Actualiza_re" #: setup/python2/setup.ui:2293 setup/python3/setup.ui:2293 msgid "_Input Characters" msgstr "Caractere _intrare" #: setup/python2/setup.ui:2313 setup/python3/setup.ui:2313 msgid "_Output Characters" msgstr "Caractere i_eșire" #: setup/python2/setup.ui:2333 setup/python3/setup.ui:2333 msgid "_Left Thumb Shift" msgstr "Schimbare cu degetul mare _stâng" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "Schimbare cu degetul mare d_rept" #: setup/python2/setup.ui:2387 setup/python3/setup.ui:2387 msgid "_Remove" msgstr "_Elimină" #: setup/python2/setup.ui:2607 setup/python3/setup.ui:2607 msgid "_Short Label:" msgstr "Etichetă scurtă:" #: setup/python2/setup.ui:2631 setup/python3/setup.ui:2631 msgid "_Description:" msgstr "_Descriere:" #: setup/python2/setup.ui:2663 setup/python3/setup.ui:2663 msgid "_Use your dictionary alone with switching dictionaries" msgstr "" "_Utilizează doar dicționarul dvs., fără a schimba între diferite dicționare" #: setup/python2/setup.ui:2679 setup/python3/setup.ui:2679 msgid "_Embed your dictionary in the system dictionary" msgstr "Înglob_ează dicționarul dvs. în dicționarul sistemului" #: setup/python2/setup.ui:2695 setup/python3/setup.ui:2695 msgid "Enable the _reverse conversion" msgstr "Activează conversia inve_rsă" #: setup/python2/setup.ui:2715 setup/python3/setup.ui:2715 msgid "The Anthy engine for the IBus input platform" msgstr "Motorul Anthy pentru platforma de introducere IBus" #: setup/python2/setup.ui:2719 setup/python3/setup.ui:2719 msgid "translator_credits" msgstr "Remus-Gabriel Chelu , 2026" ibus-ibus-anthy-8b39a01/po/si.po000066400000000000000000000575041514660154000164740ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/po/sv.po000066400000000000000000000713641514660154000165110ustar00rootroot00000000000000# Swedish translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2008-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Luna Jernberg , 2023, 2025. # Luna Jernberg , 2026. 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 17:13+0900\n" "PO-Revision-Date: 2026-02-02 05:58+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 5.15.2\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Japansk inmatningsmetod" #: 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 inmatningsmetoden är utformad för att mata in japansk text." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "Inmatnings-metod" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japanska" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Se uppströms utgivningslistan." #: 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 "" "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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Inställningar - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Inmatningsläge" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Ändra inmatningsläge" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Halvbredd Katakana" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latin" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Bred latin" #: 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 "Skrivmetod" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Ändra skrivmetod" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Tumskift" #: 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 "Segmentläge" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Växla konverteringsläge" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Multipla segment" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Enstaka segment" #: 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 "Omedelbar konvertering (multipla segment)" #: 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 "Omedelbar konvertering (enstaka segment)" #: 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 "Ordboksläge" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Växla ordbok" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Ordbok - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Ord" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Konfigurera ordböcker" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Redigera ordböcker" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Starta ordboksverktyget" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Lägg till ord" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Lägg till ord i ordboken" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Allmänt" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Postnummerkonvertering" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Symbol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Gammal teckenstil" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Era" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: 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 inställningar" #: 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 "Ställ in IBus Anthy motor" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Menyetikett" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Kommando" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Genväg" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Beskrivning" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Inbäddad" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Enstaka" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Inmatning av tecken" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Utmatning av tecken" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Inmatning" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Enstaka" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Vänster" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Höger" #: setup/python2/main.py:587 setup/python3/main.py:591 msgid "Customize Romaji Key Table" msgstr "Anpassa Romaji tangenttabell" #: 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 "_Romaji tangenttabell:" #: setup/python2/main.py:589 setup/python2/main.py:595 #: setup/python3/main.py:593 setup/python3/main.py:599 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Standard" #: setup/python2/main.py:593 setup/python3/main.py:597 msgid "Customize Kana Key Table" msgstr "Anpassa Kana tangenttabell" #: 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 "_Kana tangenttabell:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Japansk tangentbordslayout" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "Amerikansk tangentbordslayout" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Anpassa tumskift tangenttabell" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Tumskift tangenttabell:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Enstaka _utdatatecken" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Bas" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "NICOLA-J tangentförlängning" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "NICOLA-A tangentförlängning" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "NICOLA-F tangentförlängning" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J tangentförlängning" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A tangentförlängning" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F tangentförlängning" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J tangentförlängning" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A tangentförlängning" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F tangentförlängning" #: setup/python2/main.py:753 setup/python3/main.py:757 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:761 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:765 msgid "Your choosed file is a directory: " msgstr "Din valda fil är en katalog: " #: setup/python2/main.py:765 setup/python3/main.py:769 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:778 msgid "Your file path is not good: " msgstr "Din filsökväg är inte bra: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Motorns xml-fil existerar inte: " #: 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 tangentbordslayout har ändrats. Starta om ibus för att ladda om " "layouten." #: setup/python2/main.py:1263 setup/python3/main.py:1256 msgid "Please specify Input Chars" msgstr "Vänligen specificera indatatecken" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Vänligen specificera utdatatecken" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Vänligen specificera Vänster tumskift tecken" #: setup/python2/main.py:1272 setup/python3/main.py:1265 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:1278 setup/python3/main.py:1312 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:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "Din fil existerar inte: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Öppna Ordboksfil" #: 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 "_Avbryt" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Öppna" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Redigera Ordboksfil" #: 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 "Din valda fil är inte korrekt." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Du kan inte ta bort systemordlistan." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Din fil är inte bra." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Visa Ordboksfil" #: setup/python2/main.py:1644 setup/python3/main.py:1637 msgid "Please press a key (or a key combination)" msgstr "Tryck en tangent (eller tangentkombination)" #: setup/python2/main.py:1645 setup/python3/main.py:1638 msgid "The dialog will be closed when the key is released" msgstr "Dialogen stängs när tangenten släpps" #: setup/python2/main.py:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Ogiltig tangentsymbol" #: 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 "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 "_Radera" #: 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" #~ msgid "Anthy Input Method" #~ msgstr "Anthy Inmatningsmetod" ibus-ibus-anthy-8b39a01/po/tr.po000066400000000000000000000715111514660154000165000ustar00rootroot00000000000000# Turkish translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Oğuz Ersen , 2020, 2021. # Oğuz Ersen , 2022, 2025. 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 17:13+0900\n" "PO-Revision-Date: 2025-10-05 07:37+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 5.13.3\n" #: data/ibus-anthy.appdata.xml.in:8 msgid "Japanese input method" msgstr "Japonca giriş yöntemi" #: 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 giriş yöntemi, Japonca metin girmek için tasarlanmıştır." #: 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 "" "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." #: data/ibus-anthy.appdata.xml.in:21 msgid "input-method" msgstr "giriş yöntemi" #: data/ibus-anthy.appdata.xml.in:22 msgid "Japanese" msgstr "Japonca" #: data/ibus-anthy.appdata.xml.in:31 msgid "See the upstream release list." msgstr "Sürüm notlarına bakın." #: 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 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:267 engine/python3/engine.py:268 #: setup/python2/main.py:420 setup/python3/main.py:424 msgid "Preferences - Anthy" msgstr "Tercihler - Anthy" #: engine/python2/engine.py:269 engine/python3/engine.py:270 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: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 "Giriş modu" #: engine/python2/engine.py:313 engine/python3/engine.py:314 msgid "Switch input mode" msgstr "Giriş modunu değiştir" #: engine/python2/engine.py:323 engine/python3/engine.py:324 #: setup/python2/setup.ui:17 setup/python3/setup.ui:17 msgid "Hiragana" msgstr "Hiragana" #: engine/python2/engine.py:332 engine/python3/engine.py:333 #: setup/python2/setup.ui:20 setup/python3/setup.ui:20 msgid "Katakana" msgstr "Katakana" #: engine/python2/engine.py:341 engine/python3/engine.py:342 #: setup/python2/setup.ui:23 setup/python3/setup.ui:23 msgid "Halfwidth Katakana" msgstr "Yarım genişlikte Katakana" #: engine/python2/engine.py:350 engine/python3/engine.py:351 #: setup/python2/setup.ui:26 setup/python3/setup.ui:26 msgid "Latin" msgstr "Latince" #: engine/python2/engine.py:359 engine/python3/engine.py:360 #: setup/python2/setup.ui:29 setup/python3/setup.ui:29 msgid "Wide Latin" msgstr "Geniş Latin" #: 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 "Yazma yöntemi" #: engine/python2/engine.py:401 engine/python3/engine.py:402 msgid "Switch typing method" msgstr "Yazma yöntemini değiştir" #: engine/python2/engine.py:411 engine/python3/engine.py:412 #: setup/python2/setup.ui:71 setup/python3/setup.ui:71 msgid "Romaji" msgstr "Romaji" #: engine/python2/engine.py:420 engine/python3/engine.py:421 #: setup/python2/setup.ui:74 setup/python3/setup.ui:74 msgid "Kana" msgstr "Kana" #: engine/python2/engine.py:429 engine/python3/engine.py:430 #: setup/python2/setup.ui:77 setup/python3/setup.ui:77 msgid "Thumb shift" msgstr "Thumb shift" #: 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 "Segment modu" #: engine/python2/engine.py:468 engine/python3/engine.py:469 msgid "Switch conversion mode" msgstr "Dönüşüm modunu değiştir" #: engine/python2/engine.py:478 engine/python3/engine.py:479 #: setup/python2/setup.ui:87 setup/python3/setup.ui:87 msgid "Multiple segment" msgstr "Çoklu segment" #: engine/python2/engine.py:487 engine/python3/engine.py:488 #: setup/python2/setup.ui:90 setup/python3/setup.ui:90 msgid "Single segment" msgstr "Tek segment" #: 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 "Anında dönüşüm (çoklu segment)" #: 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 "Anında dönüşüm (tek segment)" #: 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 "Sözlük modu" #: engine/python2/engine.py:544 engine/python3/engine.py:545 msgid "Switch dictionary" msgstr "Sözlüğü değiştir" #: engine/python2/engine.py:634 engine/python3/engine.py:634 #: setup/python2/main.py:417 setup/python3/main.py:421 msgid "Dictionary - Anthy" msgstr "Sözlük - Anthy" #. Translators: "Dic" means 'dictionary', One kanji may be good. #: engine/python2/engine.py:640 engine/python3/engine.py:639 msgid "Dic" msgstr "Sözlük" #: engine/python2/engine.py:647 engine/python3/engine.py:646 msgid "Configure dictionaries" msgstr "Sözlükleri yapılandır" #: engine/python2/engine.py:657 engine/python3/engine.py:656 msgid "Edit dictionaries" msgstr "Sözlükleri düzenle" #: engine/python2/engine.py:659 engine/python3/engine.py:658 msgid "Launch the dictionary tool" msgstr "Sözlük aracını başlat" #: engine/python2/engine.py:666 engine/python3/engine.py:665 msgid "Add words" msgstr "Sözcük ekle" #: engine/python2/engine.py:668 engine/python3/engine.py:667 msgid "Add words to the dictionary" msgstr "Sözlüğe sözcük ekle" #: setup/python2/anthyprefs.py:337 setup/python2/setup.ui:397 #: setup/python3/anthyprefs.py:330 setup/python3/setup.ui:397 msgid "General" msgstr "Genel" #: setup/python2/anthyprefs.py:338 setup/python3/anthyprefs.py:331 msgid "Zip Code Conversion" msgstr "Posta Kodu Dönüştürme" #: setup/python2/anthyprefs.py:339 setup/python3/anthyprefs.py:332 msgid "Symbol" msgstr "Sembol" #: setup/python2/anthyprefs.py:340 setup/python3/anthyprefs.py:333 msgid "Old Character Style" msgstr "Eski Karakter Stili" #: setup/python2/anthyprefs.py:341 setup/python3/anthyprefs.py:334 msgid "Era" msgstr "Dönem" #: setup/python2/anthyprefs.py:342 setup/python3/anthyprefs.py:335 msgid "Emoji" msgstr "Emoji" #: 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 Kurulumu" #: 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 motorunu kur" #: setup/python2/main.py:177 setup/python3/main.py:179 msgid "Menu label" msgstr "Menü etiketi" #: setup/python2/main.py:198 setup/python3/main.py:200 msgid "Command" msgstr "Komut" #: setup/python2/main.py:202 setup/python3/main.py:204 msgid "Shortcut" msgstr "Kısayol" #: setup/python2/main.py:247 setup/python3/main.py:249 msgid "Description" msgstr "Açıklama" #. Translators: "Embd" is an abbreviation of "embedded". #: setup/python2/main.py:255 setup/python3/main.py:257 msgid "Embd" msgstr "Gömülü" #. Translators: "Sgl" is an abbreviation of "single". #: setup/python2/main.py:263 setup/python3/main.py:265 msgid "Sgl" msgstr "Tek" #: setup/python2/main.py:441 setup/python2/main.py:467 #: setup/python3/main.py:445 setup/python3/main.py:471 msgid "Input Chars" msgstr "Giriş Karakterleri" #: setup/python2/main.py:443 setup/python2/main.py:469 #: setup/python3/main.py:447 setup/python3/main.py:473 msgid "Output Chars" msgstr "Çıkış Karakterleri" #: setup/python2/main.py:499 setup/python3/main.py:503 msgid "Input" msgstr "Giriş" #: setup/python2/main.py:501 setup/python3/main.py:505 msgid "Single" msgstr "Tek" #: setup/python2/main.py:503 setup/python3/main.py:507 msgid "Left" msgstr "Sol" #: setup/python2/main.py:505 setup/python3/main.py:509 msgid "Right" msgstr "Sağ" #: setup/python2/main.py:587 setup/python3/main.py:591 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:592 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:593 setup/python3/main.py:599 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:594 setup/python3/main.py:1064 #: setup/python3/main.py:1168 setup/python3/setup.ui:183 msgid "Default" msgstr "Öntanımlı" #: setup/python2/main.py:593 setup/python3/main.py:597 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:598 setup/python3/setup.ui:988 msgid "_Kana Key Table:" msgstr "_Kana Tuş Tablosu:" #: setup/python2/main.py:596 setup/python3/main.py:600 msgid "Japanese Keyboard Layout" msgstr "Japonca Klavye Düzeni" #: setup/python2/main.py:597 setup/python3/main.py:601 msgid "U.S. Keyboard Layout" msgstr "ABD Klavye Düzeni" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "Thumb Shift Tuş Tablosunu Özelleştir" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Thumb Shift Tuş Tablosu:" #: setup/python2/main.py:602 setup/python3/main.py:606 msgid "Single _Output Chars" msgstr "Tek _Çıkış Karakterleri" #: setup/python2/main.py:603 setup/python3/main.py:607 msgid "Base" msgstr "Temel" #: setup/python2/main.py:604 setup/python3/main.py:608 msgid "NICOLA-J key extension" msgstr "NICOLA-J tuş uzantısı" #: setup/python2/main.py:605 setup/python3/main.py:609 msgid "NICOLA-A key extension" msgstr "NICOLA-A tuş uzantısı" #: setup/python2/main.py:606 setup/python3/main.py:610 msgid "NICOLA-F key extension" msgstr "NICOLA-F tuş uzantısı" #: setup/python2/main.py:607 setup/python3/main.py:611 msgid "FMV KB231-J key extension" msgstr "FMV KB231-J tuş uzantısı" #: setup/python2/main.py:608 setup/python3/main.py:612 msgid "FMV KB231-A key extension" msgstr "FMV KB231-A tuş uzantısı" #: setup/python2/main.py:609 setup/python3/main.py:613 msgid "FMV KB231-F key extension" msgstr "FMV KB231-F tuş uzantısı" #: setup/python2/main.py:610 setup/python3/main.py:614 msgid "FMV KB611-J key extension" msgstr "FMV KB611-J tuş uzantısı" #: setup/python2/main.py:611 setup/python3/main.py:615 msgid "FMV KB611-A key extension" msgstr "FMV KB611-A tuş uzantısı" #: setup/python2/main.py:612 setup/python3/main.py:616 msgid "FMV KB611-F key extension" msgstr "FMV KB611-F tuş uzantısı" #: setup/python2/main.py:753 setup/python3/main.py:757 msgid "Your choosed file has already been added: " msgstr "Seçtiğiniz dosya zaten eklenmiş: " #: setup/python2/main.py:757 setup/python3/main.py:761 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:765 msgid "Your choosed file is a directory: " msgstr "Seçtiğiniz dosya bir dizin: " #: setup/python2/main.py:765 setup/python3/main.py:769 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:778 msgid "Your file path is not good: " msgstr "Dosya yolunuz iyi değil: " #: setup/python2/main.py:935 setup/python3/main.py:937 msgid "The engine xml file does not exist: " msgstr "Motor xml dosyası mevcut değil: " #: 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 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:1256 msgid "Please specify Input Chars" msgstr "Lütfen Giriş Karakterlerini belirtin" #: setup/python2/main.py:1266 setup/python3/main.py:1259 msgid "Please specify Output Chars" msgstr "Lütfen Çıkış Karakterlerini belirtin" #: setup/python2/main.py:1269 setup/python3/main.py:1262 msgid "Please specify Left Thumb Shift Chars" msgstr "Lütfen Sol Thumb Shift Karakterlerini belirtin" #: setup/python2/main.py:1272 setup/python3/main.py:1265 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:1278 setup/python3/main.py:1312 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:1465 #: setup/python3/main.py:1367 setup/python3/main.py:1458 msgid "Your file does not exist: " msgstr "Dosyanız mevcut değil: " #: setup/python2/main.py:1385 setup/python3/main.py:1378 msgid "Open Dictionary File" msgstr "Sözlük Dosyasını Aç" #: 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 "_İptal" #: setup/python2/main.py:1389 setup/python3/main.py:1382 msgid "_Open" msgstr "_Aç" #: setup/python2/main.py:1392 setup/python3/main.py:1385 msgid "Edit Dictionary File" msgstr "Sözlük Dosyasını Düzenle" #: 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 "_Tamam" #: setup/python2/main.py:1407 setup/python3/main.py:1400 msgid "Your choosed file is not correct." msgstr "Seçtiğiniz dosya doğru değil." #: setup/python2/main.py:1437 setup/python3/main.py:1430 msgid "You cannot delete the system dictionary." msgstr "Sistem sözlüğünü silemezsiniz." #: setup/python2/main.py:1461 setup/python3/main.py:1454 msgid "Your file is not good." msgstr "Dosyanız iyi değil." #: setup/python2/main.py:1483 setup/python3/main.py:1476 msgid "View Dictionary File" msgstr "Sözlük Dosyasını Görüntüle" #: setup/python2/main.py:1644 setup/python3/main.py:1637 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:1645 setup/python3/main.py:1638 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:1665 setup/python2/main.py:1686 #: setup/python3/main.py:1658 setup/python3/main.py:1679 msgid "Invalid keysym" msgstr "Geçersiz keysym" #: 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 "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 " #~ msgid "Anthy Input Method" #~ msgstr "Anthy Giriş Yöntemi" ibus-ibus-anthy-8b39a01/po/uk.po000066400000000000000000001031771514660154000164760ustar00rootroot00000000000000# Ukrainian translation of ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 Takao Fujiwara # This file is distributed under the same license as the ibus-anthy package. # # Translators: # Yuri Chornoivan , 2015-2016. #zanata, 2020, 2025. # fujiwara , 2017, 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: 2025-02-17 17:13+0900\n" "PO-Revision-Date: 2025-06-14 08:59+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 5.11.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 "" "Спосіб введення 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 "Додаткові Shift" #: 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 "Налаштування Anthy IBus" #: 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 "Налаштування рушія Anthy IBus" #: 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 "Налаштовування розкладки клавіш із додатковими Shift" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "_Розкладка з додатковими Shift:" #: 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 "Розширення клавіш 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 "Будь ласка, вкажіть символи лівої додаткової клавіші Shift" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "Будь ласка, вкажіть символи правої додаткової клавіші Shift" #: 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 "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" "Юрій Чорноіван" #~ msgid "Anthy Input Method" #~ msgstr "Спосіб введення Anthy" ibus-ibus-anthy-8b39a01/po/zh_CN.po000066400000000000000000000710151514660154000170530ustar00rootroot00000000000000# Chinese translation for ibus-anthy. # Copyright (C) 2008 Peng Huang # Copyright (C) 2009-2026 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. # lumingzh , 2025. msgid "" msgstr "" "Project-Id-Version: IBus-Anthy\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-09-23 01:54+0000\n" "Last-Translator: lumingzh \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.13.3\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 "拇指 Shift" #: 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 "美国键盘布局" #: setup/python2/main.py:600 setup/python3/main.py:604 msgid "Customize Thumb Shift Key Table" msgstr "自定义拇指 Shift 键表" #: setup/python2/main.py:601 setup/python3/main.py:605 msgid "_Thumb Shift Key Table:" msgstr "拇指 Shift 键表(_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 "请指定左拇指 Shift 字符" #: setup/python2/main.py:1272 setup/python3/main.py:1265 msgid "Please specify Right Thumb Shift Chars" msgstr "请指定右拇指 Shift 字符" #: 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 "确定(_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 "在预编辑中使用 Shift 键和 Hiragana–Katakana 键切换“Hiragana”与“Latin”" #: 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 "左拇指 Shift 键(_L):" #: setup/python2/setup.ui:1210 setup/python3/setup.ui:1210 msgid "Right _Thumb Shift Key:" msgstr "右拇指 Shift 键(_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 "可使用拇指 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,因为此更改 IM 布局的选项仅在输入法开启时有效。" #: setup/python2/setup.ui:1437 setup/python3/setup.ui:1437 msgid "_Enable semi-voiced sound mark with Shift key" msgstr "使用 Shift 键启用半浊音声音标记(_E)" #: 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 键表(_S):" #: setup/python2/setup.ui:1507 setup/python3/setup.ui:1507 msgid "Thumb Shift Layout" msgstr "拇指 Shℹft 布局" #: 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 "编辑词典命令(_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 "左拇指 Shift (_L)" #: setup/python2/setup.ui:2353 setup/python3/setup.ui:2353 msgid "_Right Thumb Shift" msgstr "右拇指 Shift (_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 "" "lexuge , 2017\n" "Qiyu Yan , 2019\n" "黄鹏 \n" "Fedora 简体中文组 \n" "Hankel Bao , 2020\n" "刘韬 , 2023\n" "lumingzh , 2025" #~ msgid "Anthy Input Method" #~ msgstr "Anthy 输入法" #~ msgid "ibus is not running." #~ msgstr "ibus 没有运行。" #~ msgid "_Apply" #~ msgstr "应用(_A)" ibus-ibus-anthy-8b39a01/python-config.py000077500000000000000000000026121514660154000202320ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/setup/000077500000000000000000000000001514660154000162305ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/setup/Makefile.am000066400000000000000000000016501514660154000202660ustar00rootroot00000000000000# vim:set noet ts=4: # # ibus-anthy - The Anthy engine for IBus # # Copyright (c) 2014-2025 Takao Fujiwara # Copyright (c) 2014-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 = if ENABLE_PYTHON3 SUBDIRS += python3 endif ibus-ibus-anthy-8b39a01/setup/python2/000077500000000000000000000000001514660154000176335ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/setup/python2/Makefile.am000066400000000000000000000062251514660154000216740ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/setup/python2/_config.py.in000077700000000000000000000000001514660154000300722../../engine/python2/_config.py.inustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/setup/python2/anthyprefs.py000066400000000000000000000231201514660154000223660ustar00rootroot00000000000000# -*- 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-ibus-anthy-8b39a01/setup/python2/ibus-setup-anthy.desktop.in.in000066400000000000000000000002551514660154000254630ustar00rootroot00000000000000[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-ibus-anthy-8b39a01/setup/python2/ibus-setup-anthy.in000066400000000000000000000020341514660154000234030ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/setup/python2/main.py000066400000000000000000002103201514660154000211270ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/setup/python2/prefs.py000066400000000000000000000320001514660154000213170ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/setup/python2/setup.ui000066400000000000000000004243441514660154000213450ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/setup/python3/000077500000000000000000000000001514660154000176345ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/setup/python3/Makefile.am000066400000000000000000000062051514660154000216730ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/setup/python3/_config.py.in000077700000000000000000000000001514660154000300742../../engine/python3/_config.py.inustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/setup/python3/anthyprefs.py000066400000000000000000000225211514660154000223730ustar00rootroot00000000000000# -*- 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-ibus-anthy-8b39a01/setup/python3/ibus-setup-anthy.desktop.in.in000066400000000000000000000002551514660154000254640ustar00rootroot00000000000000[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-ibus-anthy-8b39a01/setup/python3/ibus-setup-anthy.in000066400000000000000000000020341514660154000234040ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/setup/python3/main.py000066400000000000000000002100271514660154000211340ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/setup/python3/prefs.py000066400000000000000000000315571514660154000213400ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/setup/python3/setup.ui000066400000000000000000004243441514660154000213460ustar00rootroot00000000000000 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-ibus-anthy-8b39a01/tests/000077500000000000000000000000001514660154000162325ustar00rootroot00000000000000ibus-ibus-anthy-8b39a01/tests/Makefile.am000066400000000000000000000033101514660154000202630ustar00rootroot00000000000000# 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-ibus-anthy-8b39a01/tests/anthycases.py000077500000000000000000000052241514660154000207540ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/tests/anthytest.py000077500000000000000000000513361514660154000206420ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/tests/meta.test.in000066400000000000000000000000661514660154000204700ustar00rootroot00000000000000[Test] Type=session Exec=@TEST_EXEC@ --tap Output=TAP ibus-ibus-anthy-8b39a01/tests/test-build.sh000077500000000000000000000124771514660154000206600ustar00rootroot00000000000000#!/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-ibus-anthy-8b39a01/tests/test-console.sh000077500000000000000000000140361514660154000212140ustar00rootroot00000000000000#!/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 $@;