アドオン開発者ガイドの日本語化
sourceforge.jp subversion リポジトリに未翻訳の
sandbox/website/devDocs/devDocs.ja.po
を追加しました(revision 97)。
本作業は dream945 さんに割り当てさせていただき、難しいところは私がヘルプします。
メールでご連絡しようと思ったのですが、公開で情報共有したほうがいいのでこちらに書きます。
ツールについて補足します。
(1) POEdit について
sandbox に追加した devDocs.ja.po は POEdit で作業できるはずです。
POEdit は 1.6.3 が最新ですが私はまだ 1.5.7 を使っています。
「表示」「ソート ファイルに書かれている順(F)」 を選択しておけば、ドキュメントに書かれている順番に翻訳対象のテキストが並びます。
下記は NVDA の翻訳者向けの POEdit の説明です。 NVDA での POEdit の操作についてやや詳しく書いてあります。
http://community.nvda-project.org/wiki/TranslatingTheInterface
このNVDAの翻訳マニュアルを日本語にするのも、翻訳グループの重要な課題かも知れません。。
(2) Markdown について
Markdown 2.0.1 と書かれているのは下記の Python 拡張ライブラリです。
https://pypi.python.org/pypi/Markdown/2.0.1
Markdown-2.0.1.win32.exe と書かれたインストーラーが使えると思います。 私は Python のパッケージ管理ツール (pip install markdown) で入れてしまった気がしますが。。
http://pythonhosted.org/Markdown/install.html
(3) GetTextについて
GNU Gettext package for Windows は POEdit 1.5.7 をインストールした状況であれば、 "C:\Program Files (x86)\Poedit\bin" に xgettext.exe などが入っているので、 ここにパスを通すのがよいかも知れません。
以前は NVDA 日本語チームの miscdep に gettext パッケージを入れていましたが、 本家の miscDeps サブモジュールに統合されてしまったので、削除しました。
配布元は下記だったと思います。
本家版のアドオン開発ガイドは現在も執筆が続いており、内容が書き加えられています。
オリジナルは下記の bitbucket リポジトリで、このページで markdown ファイルから変換された HTML バージョンを読むこともできます。
本家翻訳チーム revision 13947 にて dream945 さんの作業が終わったところまでをコミットしました。
西本が一部修正しましたが、あまり丁寧に見ていないので、おかしいところが残っています。
devDocs の日本語版については、誤訳やタイプミスがいくつかあり、今後も改良と作業の続きを行う予定です。
以下を今後の検討事項とさせてください:
本家翻訳チーム revision 14679 にて dream945 さんの作業の続きをコミットしました。
一部、誤字や翻訳の修正を行いましたが、まだ完全ではありません。引き続き検討します。
アドオン開発者ガイドの翻訳と体裁を、途中まで直していたので、 ひとまずコミットしました:
アドオンコミュニティの開発者ガイドの内容が変わり、下記に移動しました。
https://bitbucket.org/nvdaaddonteam/devguide/
いままで翻訳者用システムで作業していたアドオン開発者ガイドの日本語版にアクセスできなくなったようです。
過去の作業のソースは下記にあります:
アドオン開発者ガイドの日本語版にアクセスできないのは NV Access 全体のサーバーのトラブルという話。
本家アドオンコミュニティと本家翻訳チームの GitHub への移行が予定されており、 Assembla のレポジトリが消滅するかも知れないので、 この件について過去の作業をここに保存しておきます。 また、将来の改定作業については別チケットで扱うこととして、本件はクローズします。
devDocs.ja.po
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: devDocs\n"
"POT-Creation-Date: 2017-03-21 00:59+1000\n"
"PO-Revision-Date: 2015-01-28 20:49+0900\n"
"Last-Translator: Takuya Nishimoto <nishimotz@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.7\n"
#. type: Plain text
#, no-wrap
msgid "[[!meta title=\"NVDA Add-on Development Guide\"]]\n"
msgstr "[[!meta title=\"NVDA Add-on 開発者ガイド\"]]\n"
#. type: Plain text
msgid ""
"Welcome to NVDA add-on Development Guide. This is the one-stop guide on how "
"NvDA add-ons are developed, as well as explaining some useful code segments "
"from NvDA core source code useful when writing add-ons."
msgstr ""
"NVDAアドオン開発者ガイドへようこそ。このガイドは、NVDAアドオンの開発方法と、"
"アドオンを開発する時に役に立つNVDAコアのソースコードについて解説したワンス"
"テップガイドです。"
#. type: Plain text
msgid ""
"For more information on NVDA development, please visit [NvDA Community "
"Development page][1]. Be sure to go over [NVDA Developer Guide][2] to "
"familiarize yourself with key terms and basics on getting started with add-"
"on development."
msgstr ""
"NVDA開発について詳細は、[NVDA開発コミュニティーのページ][1]をご覧ください。ア"
"ドオンの開発を始めるために重要事項と基本に慣れるために[NVDA開発者ガイド][2]を"
"必ずよくお読みください。"
#. type: Title ##
#, no-wrap
msgid "Audience"
msgstr "対象者"
#. type: Plain text
msgid ""
"This guide is designed for both beginners who are new to Python and/or NVDA "
"development in general, as well as experts and power users and programmers "
"who are familiar with Python or other programming languages and/or familiar "
"with NvDA source code structure."
msgstr ""
"このガイドは、Python及びその他のプログラム言語に精通している方や、NVDAソース"
"コードの構造に精通しているエキスパート、パワーユーザー、及びプログラマはもち"
"ろんのこと、一般のPythonユーザー、またはNVDA開発をするのは初めてというビギ"
"ナーの両者のために書かれています。"
#. type: Plain text
msgid ""
"If you are new to NVDA add-on or core development, we recommend that you get "
"to know Python first, as it gives necessary programming background for "
"understanding the rest of the guide. If you are a Python programmer but are "
"new to NvDA development, please checkout NVDA development Guide and Design "
"Overview document, both of which can be found on the NVDA Community website."
msgstr ""
"もしNVDAアドオンまたはコアの開発をするのが初めてならば、まず最初にPythonを勉"
"強すれば、このガイドを理解するための基礎知識を得ることができます。あなたが"
"PythonプログラマであるけれどもNVDAの開発をするのが初めてならば、NVDA開発者ガ"
"イドと設計概要の文書(両方ともNVDAコミュニティのウェブサイト上に掲載されていま"
"す)をお読みください。"
#. type: Title ###
#, no-wrap
msgid "Authors, contributions and copyright"
msgstr "作者、貢献者と著作権"
#. type: Plain text
msgid ""
"This guide was originally written by Joseph Lee and is shaped by NVDA user "
"and developer community. We welcome your feedback and contributionn."
msgstr ""
"このガイドはジョセフ・リーによって書かれ、NVDAユーザと開発コミュニティによっ"
"てまとめられます。私達はあなたのフィードバックと貢献を歓迎します。"
#. type: Plain text
#, fuzzy
#| msgid ""
#| "Copyright: NVDA is copyright 2006-2013 NV Access. Microsoft Windows, "
#| "Microsoft Office, Win32 API and other MS products are copyright Microsoft "
#| "Corporation. IAccessible package is copyright IBM and Linux Foundation. "
#| "Python is copyright Python Foundation. Other products mentioned are "
#| "copyrighted by authors of these products."
msgid ""
"Copyright: NVDA is copyright 2006-2016 NV Access. Microsoft Windows, "
"Microsoft Office, Win32 API and other MS products are copyright Microsoft "
"Corporation. IAccessible package is copyright IBM and Linux Foundation. "
"Python is copyright Python Foundation. Other products mentioned are "
"copyrighted by authors of these products."
msgstr ""
"著作権: NVDA is copyright 2006-2013 NV Access. Microsoft Windows、Microsoft "
"Office、Win32 API、および他のMS製品の著作権はMicrosoft Corporationに帰属しま"
"す。IAccessibleパッケージの著作権はIBM及びLinux財団に帰属します。Pythonの著作"
"権はPython Foundationに帰属します。その他製品の著作権は各製品の作者に帰属しま"
"す。"
#. type: Title ##
#, no-wrap
msgid "System requirements"
msgstr "システム要件"
#. type: Plain text
msgid ""
"To create an add-on for NVDA, please make sure the following system "
"requirements are met:"
msgstr ""
"NVDAアドオンを作成するためには、以下のシステム要件を満たしていることをご確認"
"ください:"
#. type: Bullet: '* '
msgid ""
"A version of NVDA is available on your computer (either a portable or "
"installed version will work, but we strongly recommend that you install a "
"copy of NVDA on your development computer)."
msgstr ""
"NVDAのバージョンは、ポータブル版、インストール版のどちらでもかまいませんが、"
"開発を行うコンピュータにNVDAをインストールしておくことを推奨します。"
#. type: Bullet: '* '
msgid "Python 2.7 series, version 2.7.5 32-bit for Windows."
msgstr "Python2.7シリーズ : version 2.7.x 32-bit for Windows."
#. type: Bullet: '* '
msgid "SCons 2, version 2.3.0 for generating add-on packages."
msgstr "SCons 2, version 2.3.0 : アドオンパッケージを生成する際に使用します。"
#. type: Bullet: '* '
msgid "Markdown 2.0.1 or later for generating add-on documentation."
msgstr "Markdown 2.0.1以降 : アドオンのドキュメントの生成に使用します。"
#. type: Bullet: '* '
msgid "GNU Gettext package for Windows for message localization support."
msgstr ""
"GNU Gettext package for Windows : メッセージの多言語化をサポートする際に使用"
"します。"
#. type: Bullet: '* '
msgid ""
"Git 1.7.9 or later if you wish to upload the add-on to a repository such as "
"Bitbucket (optional, see below). You can use various Git clients, such as "
"Git Bash, Cygwin's Git, Tortoise Git and so forth."
msgstr ""
"Git 1.7.9 以降 : アドオンをアップロードする際に使用します。Git Bash、"
"Cygwin's Git、Tortoise Gitなどなどの様々なGitクライアントが利用可能です。"
#. type: Bullet: '* '
msgid ""
"The NVDA Community Add-on template for ease of add-on file and folder "
"packaging and management (optional; [click here][3] to download the add-on "
"template)."
msgstr ""
"NVDAコミュニティのアドオンテンプレート。アドオンのファイル及びフォルダーの"
"パッケージ管理が容易になります。(必須ではありません。アドオンテンプレートをダ"
"ウンロードするには[ここをクリック][3]してください。)"
#. type: Bullet: '* '
msgid "Additional Python modules or dependencies for your add-on."
msgstr "あなたが作成するアドオンに必要なPython追加モジュール。"
#. type: Title ##
#, no-wrap
msgid "What are add-ons?"
msgstr "アドオンとは"
#. type: Plain text
msgid ""
"An add-on is an additional package that extends NvDA's functionality or "
"support for programs. This may include adding global features, enhancing "
"support for an application or adding support for newer braille displays or "
"speech synthesizers."
msgstr ""
"アドオンとは、NVDAの機能を拡張したり、NVDAがアプリケーションをサポートするた"
"めの追加パッケージです。アドオンはグローバルな機能の追加、アプリケーションへ"
"のサポートの強化、新たな点字ディスプレイまたは音声エンジンへの対応などを実現"
"できます。"
#. type: Plain text
msgid "An add-on may include one or more of the following components:"
msgstr ""
"ひとつのアドオンは以下のひとつまたは複数のコンポーネントを含むことができま"
"す。"
#. type: Bullet: '* '
msgid ""
"Global plugin: A global plugin adds features for NVDA which can be used "
"anywhere, such as OCR capability."
msgstr ""
"グローバルプラグイン:どの場面でも使うことができるプラグインで、例えばOCR等、"
"NVDAの可能性を広げる機能を追加することができます。"
#. type: Bullet: '* '
msgid ""
"App module: An app module allows enhanced support for a program, such as "
"specific windows or controls of a program such as audio editors."
msgstr ""
"アプリモジュール:オーディオ編集ソフトのようなプログラムの特定のウィンドウや"
"コントロールなどへの対応を改善できます。"
#. type: Bullet: '* '
msgid ""
"Driver: A driver allows a program to talk to hardware. Currently one can "
"write drivers for new braille displays or speech synthesizers."
msgstr ""
"ドライバー:ハードウェアと通信するためのプログラムです。現在、新しい点字ディ"
"スプレイまたは音声合成エンジンのためのドライバーを作成できます。"
#. type: Plain text
msgid ""
"Each NVDA add-on package (composed of one or more components) is a zip file "
"with the file extension of .nvda-addon. These can be installed via Add-ons "
"Manager, found in NvDA 2012.2 or later. Alternatively, one can install them "
"from file manager if one uses NVDA 2012.3 or later installed on the computer."
msgstr ""
"ひとつのNVDAアドオンパッケージは、1個または複数のアドオンモジュールから構成さ"
"れます。パッケージは拡張子 .nvda-addon という名前を持つzipファイルです。これ"
"はアドオンマネージャー経由でインストールされます。アドオンマネージャーはNVDA "
"2012.2以降のバージョンで利用できます。さらにNVDA 2012.3以降では Windows の"
"ファイルマネージャーからアドオンをインストールできます。"
#. type: Plain text
msgid ""
"Throughout this guide, we refer to standard NVDA python modules which comes "
"with NVDA as \"NvDA Core\" to distinguish it from add-on modules."
msgstr ""
"このガイドでは、標準のNVDAモジュールを、アドオンモジュールと区別するために、"
"「NVDAコア」と呼びます。"
#. type: Title ##
#, no-wrap
msgid "Setting up the add-on development environment"
msgstr "アドオン開発環境の構築"
#. type: Plain text
msgid "Follow these steps to prepare your computer for writing NVDA add-ons."
msgstr "以下の手順に従って、アドオン開発環境を整えてください。"
#. type: Title ###
#, no-wrap
msgid "Installing dependencies"
msgstr "依存パッケージのインストール"
#. type: Bullet: '1. '
msgid ""
"If you don't have NVDA, download and install NVDA from NV access website."
msgstr ""
"NVDA がインストールされていなければダウンロードしてインストールします。"
#. type: Bullet: '2. '
msgid ""
"Install Python 2.7.x 32-bit on your computer (if using Windows, install "
"using the 32-bit Windows installer package)."
msgstr "Python 2.7.x Windows 32ビット版をインストールします。"
#. type: Bullet: '3. '
msgid "Install Markdown and SCons using their Windows installer packages."
msgstr "Markdown および SCons のWindows版パッケージをインストールします。"
#. type: Bullet: '4. '
msgid "If you plan to share your add-on code with others, install Git clients."
msgstr ""
"もしアドオンのソースコードを他の開発者と共有する予定があるならば、Git クライ"
"アントをインストールします。"
#. type: Bullet: '5. '
msgid ""
"Paste the Gettext executable files to your add-on development folder (see "
"the next section on add-on development folder)."
msgstr ""
"Gettext 実行ファイルを、アドオン開発フォルダーにコピーします(アドオン開発"
"フォルダーについては次のセクションをお読みください)。"
#. type: Bullet: '6. '
msgid ""
"If you are developing support for a program, speech synthesizer or a braille "
"display, install the needed software and/or have the hardware handy."
msgstr ""
"音声エンジンまたは点字ディスプレイをサポートするプログラムを作成する場合は、"
"必要なソフトウェアおよびハードウェアを用意します。"
#. type: Title ###
#, no-wrap
msgid "The add-on development folder"
msgstr "アドオン開発フォルダー"
#. type: Plain text
msgid ""
"When writing add-ons, it is recommended that you store your add-on code in "
"separate folders, one per add-on. If you chose to download the add-on "
"template, the folder structure will be automatically created."
msgstr ""
"アドオンを作成する時には、1つのアドオンについて専用の1個のフォルダーを作り、"
"そこにアドオンのプログラムを置くことをお勧めします。アドオンテンプレートをダ"
"ウンロードして使用する場合は、フォルダー構造は自動的に作成されます。"
#. type: Plain text
msgid ""
"Once you install the needed dependencies (see above), paste the Gettext "
"package executables into this add-on folder."
msgstr ""
"必要な依存パッケージ(上記参照)をインストールしたら、このアドオン開発フォル"
"ダーの中にGettextパッケージの実行形式ファイルをコピーします。"
#. type: Title ###
#, no-wrap
msgid "Add-on folder structure"
msgstr "アドオンフォルダーの構造"
#. type: Plain text
msgid ""
"Each add-on folder, at a minimum, must contain the following files and "
"folders:"
msgstr ""
"アドオンフォルダーは、最低限、以下のファイルとフォルダーを含まなければなりま"
"せん:"
#. type: Plain text
#, no-wrap
msgid ""
" * manifest.ini to store manifesst information such as add-on name and author.\n"
"* An \"addon\" subfolder with the add-on module directory underneath this subfolder (appModules, globalPlugins, synthDrivers, brailleDisplays). One or more module folders can be specified.\n"
msgstr ""
" * manifest.ini : アドオンの名前や制作者等の情報を記述します。\n"
" * \"addon\" サブフォルダー : この下に appModules, globalPlugins, synthDrivers, brailleDisplays 等のアドオンモジュールのフォルダーを置きます。1個または複数のモジュールを持つことができます。\n"
#. type: Plain text
msgid ""
"If you are using the add-on template, the folder structure will "
"automatically be created, so you need to create only the addon subfolder and "
"the add-on module folder(s) and code inside this folder. See the readme file "
"in the template folder for more information on customizing your add-on "
"manifest using the template files."
msgstr ""
"アドオンテンプレートを使っているなら、フォルダー構造は自動的に作成されますか"
"ら、このフォルダーの中のaddonサブフォルダーとアドオンモジュールフォルダー(複"
"数可)とコードだけを作成する必要があります。テンプレートファイルを使ってアドオ"
"ンを作成したりカスタマイズする方法についての詳細な説明は、テンプレートフォル"
"ダーの中のreadmeファイルをご覧ください。"
#. type: Title ###
#, no-wrap
msgid "Packaging add-ons"
msgstr "アドオンのパッケージング"
#. type: Plain text
msgid "There are two ways of packaging add-ons:"
msgstr "アドオンをパッケージングするには2つの方法があります:"
#. type: Bullet: '1. '
msgid ""
"To package your add-on manually, zip up (compress) your add-on folder as a ."
"zip file, then rename the file extension to .nvda-addon."
msgstr ""
"手動でアドオンをパッケージングするには、アドオンフォルダーをzipファイルとして"
"圧縮したあと、そのファイルの拡張子を.zipから.nvda-addonにリネームしてくださ"
"い。"
#. type: Bullet: '2. '
msgid ""
"To use the add-on template with SCons, open Command Prompt with "
"administrator mode (Windows Vista or later), change to your add-on folder "
"and type `scons~."
msgstr ""
"アドオンテンプレートとSConsを使って作成するには、まず管理者モード(Windows "
"Vistaまたはそれ以降の場合)でコマンドプロンプトを開き、アドオンフォルダーに移"
"動して、 scons とタイプしてください。"
#. type: Plain text
msgid ""
"For more information on add-on management, see the management chapter in "
"this guide."
msgstr ""
"アドオン管理における詳細については、このガイドの管理の章をご覧ください。"
#. type: Title ##
#, no-wrap
msgid "Getting started: Hands-on examples"
msgstr "さあ始めましょう:実際例"
#. type: Plain text
msgid ""
"So are you ready to start your adventure with add-ons, but not sure as to "
"how to bring it to life? If that is you, please go through this chapter, as "
"it gives you basic information to get you started with add-ons and give you "
"tips on writing code."
msgstr ""
"それでは、あなたはアドオンの冒険の旅に出発する準備ができていると思いますが、"
"どのようにして最初の一歩を踏み出せばよいか、まだ確信していませんね?もしそう"
"ならどうぞ、この章に目を通してください。アドオンの開発の初歩、開発の秘訣な"
"ど、基礎知識を得られることでしょう。"
#. type: Plain text
msgid ""
"Note: for this chapter, we will not use the actual add-on packages. Instead, "
"we'll use plugin folders - a number of subdirectories in your NVDA user "
"configuration folder (available from Start Menu/Screen if NVDA is installed) "
"to store our example Python files."
msgstr ""
"メモ:この章では、実際のアドオンパッケージは使用しません。代わりに、プラグイ"
"ンフォルダーを使います。つまりNVDAのユーザー設定フォルダーの中の特定の場所に"
"この例のPythonファイルを格納します。NVDAがインストールされた環境ではスタート"
"メニューからユーザー設定フォルダーを参照できます。"
#. type: Plain text
msgid ""
"To edit .py files, you need a word processor which can handle .py files. The "
"best one we recommend is Notepad++."
msgstr ""
"拡張子.pyのファイルを編集するために、.pyファイルに対応したテキストエディタが"
"必要です。我々が推奨するのはNotepad++(ノートパッドプラスプラス)です。"
#. type: Title ###
#, no-wrap
msgid "How add-on code is organized"
msgstr "アドオンプログラムの構成"
#. type: Plain text
#, no-wrap
msgid " Your add-on code is stored in one or more Python files (.py file). Despite different kinds of add-ons out there, they all have similar layout.\n"
msgstr "アドオンのプログラムは1つまたは複数のPythonファイル(.pyファイル)として格納します。世の中にはさまざまな種類のアドオンが存在しますが、それらはみな同じような構成で書かれています。\n"
#. type: Plain text
#, no-wrap
msgid " First, you start by writing an optional header for your add-on, such as your name, a brief sentence or two on what the add-on is for and so on. Although this is optional, it is recommend that you write the header as a reminder to keep track of what you are doing with your add-on.\n"
msgstr "まずアドオンのソースコードにヘッダを書きます。開発者の名前、1行か2行くらいの簡単なアドオンの説明などを書きます。これは省略可能ですが、作りたいアドオンの目的をいつも意識するために、備忘録としてヘッダを書くことを勧めます。\n"
#. type: Plain text
#, no-wrap
msgid " Next, you tell NVDA the modules you need for your add-on file. This is done by writing `import module` where module is the name of the module you wish to use in your code. For example, if you want to hear tones while writing your add-on, write `import tones`. Typically you may need to import two or more modules for your specific add-on (see below on list of modules you need for the type of add-on module you are writing).\n"
msgstr "次に、アドオンが必要とするPythonモジュールをNVDAに指示します。プログラムの中で使いたいのが module という名前であれば import module と記述します。例えば、アドオンで音をならしたい場合は、import tones と書きます。一般的なアドオンでは1つあるいは2つ以上のモジュールをインポートする必要があるでしょう。(特定の種類のアドオンのために必要なモジュールについては後述します)\n"
#. type: Plain text
#, no-wrap
msgid " after declaring the modules you need or import, you write your add-on code (defining classes, variables, methods and so on). The most important section is the add-on class code, which will determine the type of add-on module your code will be assigned to.\n"
msgstr "必要なモジュールをインポート宣言したあと、アドオンのプログラム(クラス定義、変数、メソッドなど)を書きます。最も重要な部分はアドオンクラスの定義で、それは、あなたが作るアドオンの種類を決定づけます。\n"
#. type: Plain text
#, no-wrap
msgid " For instance, if you wish to add support for a program, after importing appModuleHandler and other needed modules, you would write:\n"
msgstr "例えば、あるプログラムのためのアプリモジュールは appModuleHandler やその他必要なモジュールをインポートした後に、次のように書きます:\n"
#. type: Plain text
#, no-wrap
msgid " `class appModule(appModuleHandler.AppModule):`\n"
msgstr " `class appModule(appModuleHandler.AppModule):`\n"
#. type: Plain text
msgid ""
"After that, all you are writing is Python code (see the Python documentation "
"on how to write Python programs)."
msgstr ""
"その後に記述するのはPythonプログラムです。Pythonのプログラムの書き方について"
"は、Pythonのドキュメントを参照してください。"
#. type: Title ###
#, no-wrap
msgid "Running your add-on in this example chapter"
msgstr "サンプルの実行方法"
#. type: Plain text
msgid ""
"To run your example add-ons from this chapter, open your NVDA user "
"configuration directory (from Start Menu/Screen, look for Explore NVDA user "
"configuration folder\" item). Then paste your .py file to the appropriate "
"folder: appModules folder for app module examples, and globalPlugins folder "
"for global plugins."
msgstr ""
"この章のサンプルアドオンを実行するために、スタートメニューやエクスプローラー"
"で、NVDAユーザー設定フォルダーを探してください。そして、その中の適切なフォル"
"ダに拡張子.pyのファイルをコピーしてください:アップモジュールのサンプルは "
"appModules フォルダーに、グローバルプラグインのサンプルは globalPlugins フォ"
"ルダーにコピーします。"
#. type: Title ###
#, no-wrap
msgid "Example 1: Hear a tone when pressing NVDA+A"
msgstr "サンプル1:NVDA+Aキーを押したときに音をならす"
#. type: Plain text
msgid ""
"Let us start with a simple example: if you press NvDA+A, you would hear a "
"tone for 1 second from any program. Since we want to use this everywhere, it "
"must be a global plugin."
msgstr ""
"それでは簡単なサンプルから始めましょう:NVDA+Aを押したとき、どのプログラムか"
"らでも1秒間音をならします。どのアプリからでもこの機能を使いたいので、グローバ"
"ルプラグインを作ります。"
#. type: Plain text
msgid ""
"First, open your user configuration folder, then open globalPlugins folder. "
"Create a new .py file and give it a descriptive name such as example1.py (it "
"is strongly recommended that when you name your global plugin file, give it "
"a short descriptive name). Then open the newly created .py file in the word "
"processor."
msgstr ""
"まず、ユーザー設定フォルダーを開き、その中の globalPlugins フォルダーを開きま"
"す。新規の.pyファイルを作成し、それに、example1.pyなどの名前を付けてくださ"
"い。グローバルプラグインのファイルには短くて説明的な名前を付けることを強く推"
"奨します。そして、テキストエディタで新しく作成した.pyファイルを開いてくださ"
"い。"
#. type: Plain text
msgid ""
"The below code implements our example. Put this in your .py file as exactly "
"as shown:"
msgstr ""
"下記にソースコードを示します。これを正確に.pyファイルに入力してください:"
#. type: Plain text
#, no-wrap
msgid "\t# Add-on development first example\n"
msgstr ""
"\t# coding: UTF-8\n"
"\t# 訳注: ソースコードに日本語を使う場合は coding の指定が必要。文字コード UTF-8 で保存すること。\n"
"\t# アドオン開発の最初のサンプル\n"
#. type: Plain text
#, no-wrap
msgid ""
"\timport globalPluginHandler\n"
"\timport tones # We want to hear beeps.\n"
msgstr ""
"\timport globalPluginHandler\n"
"\timport tones # ビープ音を聴きたい\n"
#. type: Plain text
#, no-wrap
msgid "\tclass GlobalPlugin(globalPluginHandler.GlobalPlugin):\n"
msgstr "\tclass GlobalPlugin(globalPluginHandler.GlobalPlugin):\n"
#. type: Plain text
#, no-wrap
msgid ""
"\t\tdef script_doBeep(self, gesture):\n"
"\t\t\ttones.beep(440, 1000) # Beep a standard middle A for 1 second.\n"
msgstr ""
"\t\tdef script_doBeep(self, gesture):\n"
"\t\t\ttones.beep(440, 1000) # 中央のラの音程を1秒間ピーとならす\n"
#. type: Plain text
#, no-wrap
msgid ""
"\t\t__gestures={\n"
"\t\t\t\"kb:NVDA+A\":\"doBeep\"\n"
"\t\t}\n"
msgstr ""
"\t\t__gestures={\n"
"\t\t\t\"kb:NVDA+A\":\"doBeep\"\n"
"\t\t}\n"
#. type: Plain text
msgid ""
"In Python, you put comments by putting hash sign (#) at the start of the "
"comment line."
msgstr ""
"Pythonでコメントを記述するには、ハッシュ記号(#)を注釈行の始めに書きます。"
#. type: Title ###
#, no-wrap
msgid "Example 1 code explanation"
msgstr "サンプル1の説明"
#. type: Plain text
msgid ""
"Our first example let's us sound a beep for one second when we press NVDA+A. "
"But you might be wondering what that above code means, so let's step through "
"the code, one piece at a time."
msgstr ""
"この最初のサンプルは 、NVDA+Aを押したとき、1秒間ビープ音をならします。しかし"
"上記のプログラムの意味はまだ説明していません。ソースコードを順番に見ていくこ"
"とにしましょう。"
#. type: Bullet: '1. '
msgid ""
"At the top of the file, we wrote a header which tells us that this is an "
"example add-on."
msgstr ""
"ファイルの一番最初には、これがサンプルアドオンであるとヘッダを書きました。"
#. type: Bullet: '2. '
msgid ""
"Since this is a global plugin, we need to import a crucial module: global "
"plugin handler, so we wrote `import globalPluginHandler`."
msgstr ""
"これはグローバルプラグインなので、重要なモジュールであるグローバルプラグイン"
"ハンドラーをインポートするために、`import globalPluginHandler`と記述します。"
#. type: Bullet: '3. '
msgid ""
"Then we wrote `import tones` to import (load, or include) the tones module, "
"a built-in module from NVDA. Whenever you wish to use a method from a given "
"module, import the needed module(s)."
msgstr ""
"それから、NVDAに内蔵されている tones モジュールをインポートするために、"
"`import tones` と記述しました。インポートはロードまたはインクルードともいいま"
"すが、あるモジュールからメソッドを使いたいときには、必要なモジュールをイン"
"ポートしてください。"
#. type: Bullet: '4. '
msgid ""
"Next, we defined a class called GlobalPlugin. The text inside the brackets "
"tells us where this class is coming from (more on this concept in a second). "
"A class, in programming, describes an object, such as a person, a desk, a "
"program and others."
msgstr ""
"次に GlobalPlugin クラスを定義します。カッコの中の記述は、このクラスが何に由"
"来するか(詳細は後述)を指定します。クラスは、プログラミングにおいて、人、"
"机、プログラム、およびその他のオブジェクト(対象)を記述しています。"
#. type: Bullet: '5. '
msgid ""
"Inside the class, we wrote a method (function) called `script_doBeep`. This "
"is an example of a script, a method that'll be run or executed when you "
"press a command. Inside this script, we wrote `tones.beep(440, 1000)` to "
"tell NVDA to sound a middle A tone for 1 second. In programming, a function "
"can take arguments, or a set or parameters which tells the function what to "
"do based on the given values (we'll meet them later). In fact, many methods "
"you'll be writing, including our doBeep script takes one or more arguments. "
"More on scripts later as we journey through the guide."
msgstr ""
"クラスの中に `script_doBeep`というメソッド(関数)を書きました。これは、スク"
"リプトの一例です。スクリプトとはコマンドが入力された時に実行されるメソッドで"
"す。このスクリプトの中で、1秒間ラの音程の音を鳴らすために、`tones.beep(440, "
"1000)` と記述しました。プログラミングにおいて、メソッドは、引数またはパラメー"
"ターを取ることができ、メソッドは引数に基づいて何かを実行します(詳しくは後"
"述)。あなたがこれから書くことになる多くのメソッドと同じように、私達のdoBeep"
"スクリプトは一個以上の引数を取ります。スクリプトについては後ほど詳しく述べま"
"す。"
#. type: Bullet: '6. '
msgid ""
"Lastly, we wrote a simple dictionary (a collection) to store our command "
"(script) bindings for our doBeep script. Here, we told NVDA to assign NVDA+A "
"command for doBeep script."
msgstr ""
"最後に、doBeepスクリプトにコマンド(スクリプト)を割り当てるために、単純なディ"
"クショナリ(コレクション)を書きました。具体的には NVDA+A コマンドを doBeep ス"
"クリプトに割り当てるように指示しました。"
#. type: Plain text
msgid ""
"Save this file, then restart NVDA. Now whenever you press NvDA+A, you'll "
"hear a middle A tone for 1 second. Once you are comfortable with the add-on "
"code and how it is laid out, you can delete the newly created .py file."
msgstr ""
"このファイルを保存してから、NVDAを再起動してください。NVDA+Aを押すたびに1秒間"
"音が鳴ります。将来あなたのアドオンが完成して、きちんとした方法でインストール"
"できるようになったら、ここで作成した.pyファイルは削除することができます。"
#. type: Title ###
#, no-wrap
msgid "I don't understand those above terms"
msgstr "ここまでの用語の説明"
#. type: Plain text
msgid ""
"For some, the terms \"class\", \"method\" and so on might be new. Let's go "
"over what these terms are, as they are fundamental for add-on development:"
msgstr ""
"「クラス」「メソッド」という用語は初めて聞くかもしれません。これらの用語はア"
"ドオンの開発において基本的なことなので、これらの用語について詳しく解説しま"
"しょう:"
#. type: Bullet: '* '
msgid ""
"Class: a class describes an object. It could describe anything, such as a "
"person, a desk, an NVDA add-on and others. Classes are fundamental to NVDA "
"and other programs - in fact, a number of programmers are skilled at coming "
"up with classes."
msgstr ""
"クラス:クラスとはオブジェクトの記述です。クラスは人、机、NVDAアドオン、その"
"他、なんでも記述できます。クラスはNVDAや他のプログラムに必要です。実際、多く"
"のプログラマは、クラスを作り出すことが上手です。"
#. type: Bullet: '* '
msgid ""
"Method: A method is a short program or a routine that a program runs for "
"doing something, such as generating tones, calculating huge numbers, loading "
"NVDA add-ons and so on. Some people call them \"functions.\""
msgstr ""
"メソッド:メソッドは、音を鳴らす、数を計算する、NVDAアドオンをロードする、な"
"ど何かをするための短いプログラムです。メソッドは「関数」とも呼ばれます。"
#. type: Bullet: '* '
msgid ""
"Script: A script is a method which runs when the user performs commands such "
"as pressing certain keys on a keyboard. For example, when you press NVDA"
"+F12, NVDA runs dateTime script, located in one of the NVDA core modules "
"named Global Commands. A script takes two arguments: where the script would "
"be executed (usually \"self\"; more on that later) and the gesture for the "
"script (see below)."
msgstr ""
"スクリプト:ユーザが、キーボードの特定のキーを押すなどのコマンドを実行する時"
"に実行されるメソッドです。例えば、あなたがNVDA+F12を押したときに、NVDAは "
"dateTime スクリプトを実行します。これは Global Commands という名前の NVDA コ"
"アモジュールの中のスクリプトです。スクリプトは2つの引数を取ります:第1の引数"
"はスクリプトが実行される場所を参照するオブジェクト(通常は self )です(詳し"
"くは後述します)。第2の引数はスクリプトを呼び出したジェスチャー gesture です"
"(これも後述します)。"
#. type: Bullet: '* '
msgid ""
"Variable: A variable is something that can change, such as name of a person, "
"name of the NVDA add-on we're running, version of NVDA you are using and so "
"on. An add-on file may define one or more variables (for example, to store "
"common constants such as strings)."
msgstr ""
"変数:変数とは書き換え可能な値を格納するものです。人の名前、実行しているNVDA"
"アドオンの名前、使用中のNVDAのバージョンなどが変数の値になり得ます。ひとつの"
"アドオンファイルには複数の変数を格納できます。変数は文字列など共通の定数を定"
"義するためにも使われます。"
#. type: Bullet: '* '
msgid ""
"Module: A module is a collection of methods and variables in a file. When we "
"write add-ons, we are in fact writing additional modules that NVDA can use "
"while it is running."
msgstr ""
"モジュール:モジュールとはひとつのファイルに格納されたメソッドや変数の集合で"
"す。アドオンの開発とは、実際には、NVDA の実行中に呼び出されるモジュールの開発"
"です。"
#. type: Plain text
msgid "There are other terms that we'll get to know shortly."
msgstr "他の用語のいくつかは、このあとすぐ説明します。"
#. type: Title ###
#, no-wrap
msgid "Example 2: Generate a tone when switching to Notepad"
msgstr "サンプル2:メモ帳に切り換えた時に音をならす"
#. type: Plain text
msgid "Most of the below code comes from NvDA Developer Guide."
msgstr "下記のソースコードの大部分はNVDA開発者ガイドからの引用です。"
#. type: Plain text
msgid ""
"Not only NVDA let's you add global commands, but it also allows writing code "
"to enhance usage of programs through app modules. An app module is also a "
"Python file except that, this time, the name of the .py file is the name of "
"the executable for a program. For example, an app module for Notepad would "
"be named notepad.py."
msgstr ""
"NVDAではグローバルなコマンドの追加だけでなく、アプリモジュール (app module) "
"によって、特定のプログラムの機能を拡張できます。アプリモジュールも Python "
"ソースコードファイルですが、ファイル名の拡張子 .py の前の部分には、プログラム"
"の実行ファイルの名前を使います。例えば、メモ帳 (notepad.exe) のためのアプリモ"
"ジュールは notepad.py という名前にします。"
#. type: Plain text
msgid ""
"The below code, from NVDA developer Guide, gives a short example of a "
"typical app module: play a short beep when switching to Notepad. Put the "
"below code in notepad.py, which in turn should be placed in appModules "
"folder in your user configuration folder in order for it to run."
msgstr ""
"NVDA開発者ガイドの下記のソースコードは典型的なアプリモジュールの簡単な例で"
"す。アクティブなプログラムをメモ帳に切り換えた時に短いビープをならします。下"
"記のソースコードを notepad.py として保存し、 NVDA ユーザー設定フォルダーの中"
"の appModules フォルダーにコピーしてください。"
#. type: Plain text
#, no-wrap
msgid "\t# An example app module.\n"
msgstr "\t# An example app module.\n"
#. type: Plain text
#, no-wrap
msgid ""
"\timport appModuleHandler\n"
"\timport tones\n"
msgstr ""
"\timport appModuleHandler\n"
"\timport tones\n"
#. type: Plain text
#, no-wrap
msgid "\tclass AppModule(appModuleHandler.AppModule):\n"
msgstr "\tclass AppModule(appModuleHandler.AppModule):\n"
#. type: Plain text
#, no-wrap
msgid ""
"\t\tdef event_gainFocus(self, obj, nextHandler):\n"
"\t\t\ttones.beep(256, 200)\n"
"\t\t\tnextHandler()\n"
msgstr ""
"\t\tdef event_gainFocus(self, obj, nextHandler):\n"
"\t\t\ttones.beep(256, 200)\n"
"\t\t\tnextHandler()\n"
#. type: Title ###
#, no-wrap
msgid "Example 2 code explanation"
msgstr "サンプル2の解説"
#. type: Plain text
msgid ""
"We're seeing more new code here. Let's go over this, again piece by piece:"
msgstr "新しいソースコードが出てきました。ふたたび順番に説明します。"
#. type: Bullet: '1. '
msgid ""
"Unlike the first example, the crucial module we need is appModuleHandler."
msgstr ""
"最初のサンプル1と違うところは、重要なモジュールは appModuleHandler だというこ"
"とです。"
#. type: Bullet: '2. '
msgid "The class that we are using is AppModule."
msgstr "使っているクラスは AppModule です。"
#. type: Bullet: '3. '
msgid ""
"Unlike last time, we're using events, a method run when certain events occur "
"such as when names of controls change. Events take an object as one of its "
"arguments, the object for which the event needs to be dealt with, or, as "
"many people say, \"fired.\""
msgstr ""
"前回と違い、イベントを使っています。これはコントロールの名前が変わる時など、"
"特定の出来事が起きたときに実行されるメソッドです。イベントは引数としてオブ"
"ジェクトを受け取ります。これはそのイベントを処理しているオブジェクト、よく使"
"われる言い方をするなら「イベントを発火したオブジェクト」です。"
#. type: Bullet: '4. '
msgid ""
"Inside the event method, we're also seeing a call to `nextHandler`. This "
"method is used in event methods to tell NvDA to pass the event so it can be "
"taken care of, such as saying the name of a control after beeping."
msgstr ""
"イベントメソッドの中で、`nextHandler` を呼び出しています。この呼び出しをする"
"とNVDAがこのイベントの処理を引き継ぎます。例えばビープ音を鳴らしたあとでコン"
"トロールの名前を通知する、といった処理が行われます。"
#. type: Title ###
#, no-wrap
msgid "More new terms please"
msgstr "新しい用語の説明"
#. type: Plain text
msgid "Other terms you may see include:"
msgstr "新しい用語の説明です:"
#. type: Bullet: '* '
msgid ""
"Event: An event is a method that'll be run when some events happen, such as "
"when a program is on focused, when names of controls change and so on."
msgstr ""
"イベント:プログラムにフォーカスが当たる、コントロールの名前が変わるなど、い"
"くつかのイベントが起こる時に、実行されるメソッドです。"
#. type: Bullet: '* '
msgid ""
"Call: We say a function calls some another method when we run the second "
"method from another method. For example, in our first example, we're calling "
"tones.beep method from our script method."
msgstr ""
"呼び出し(コール):あるメソッドの中で別のメソッドが実行されるときに、メソッ"
"ド(関数)が別のメソッドを「呼び出す(コールする)」と言います。例えば、最初"
"のサンプルで、私たちが書いたスクリプトのメソッドからtones.beepメソッドを呼び"
"出しています。"
#. type: Bullet: '* '
msgid ""
"Object: An object is an instance of a class - that is, a class coming to "
"life when a program runs. Throughout your add-ons, as you write classes and "
"when you run your add-ons, your classes come to life as objects, commonly "
"abbreviated to obj. In NVDA, an object may refer to controls or parts of a "
"program."
msgstr ""
"オブジェクト:オブジェクトはあるクラスのインスタンスです。すなわち、プログラ"
"ムの実行時にクラスから生成されるものです。アドオンにおいて、あなたがクラスを"
"記述して、あなたのアドオンが実行された時に、そのクラスのオブジェクトが作られ"
"ます。オブジェクトは一般的にobjと略されます。NVDAにおいては、オブジェクトはコ"
"ントロールを意味することもあれば、あるプログラムの一部分を指すこともありま"
"す。"
#. type: Bullet: '* '
msgid ""
"Self: In Python, the word \"self\" means current class (if we're defining "
"one, such as when writing add-ons), or means the class for which a method is "
"defined. For example, in a class called numbers, the add method would have "
"self as the first argument, reminding us that add method is part of the "
"class of numbers. In NVDA development world, self usually means the current "
"NVDA object (see below), or in the add-on development, the instance of an "
"add-on. Many of your methods will have self as the first argument."
msgstr ""
"self:Pythonにおける `self` は、現在のクラス(定義中のクラス、例えば実装中のア"
"ドオン)、あるいは、メソッドを定義する対象となるクラスを指します。例えば "
"numbers クラスにおいて、add メソッドの第1引数を self とします。これは add メ"
"ソッドが numbers クラスの一部であるためです。NVDA開発において、self は通常、"
"現在のNVDAオブジェクト(後述します)またはアドオン開発における、アドオンのイン"
"スタンスを意味します。あなたが書くメソッドの多くは第1引数としてself を取るで"
"しょう。"
#. type: Plain text
msgid ""
"Just like example 1, once you're comfortable with app module code, you may "
"wish to delete the Notepad app module code unless you want to keep hearing "
"beeps when you switch to Notepad. The actual differences between global "
"plugins and app modules will become more clear when we talk about them in "
"more detail throughout this guide."
msgstr ""
"ちょうどサンプル1のように、あなたのアプリモジュールの開発が落ち着いたら、"
"notepad アプリモジュールを削除したいと思うでしょう。そうでなければメモ帳に切"
"り換えるたびにビープを聞き続けなくてはなりません。グローバルプラグインとアプ"
"リモジュールの実際の違いは、このガイドの続きで詳細に説明します。"
#. type: Title ###
#, no-wrap
msgid "A few tips for beginners"
msgstr "初心者のための豆知識"
#. type: Plain text
msgid "Here are a few useful tips passed on by add-on writers:"
msgstr "アドオン開発の経験者からの助言をいくつか紹介します:"
#. type: Bullet: '* '
msgid "Start with easy add-ons, such as saying a message, tones and so on."
msgstr ""
"メッセージをしゃべる、音をならすなど、簡単なアドオンの開発から勉強を始めてく"
"ださい。"
#. type: Bullet: '* '
msgid "Write and test one method at a time."
msgstr "メソッドはひとつずつ書いてテストしてください。"
#. type: Bullet: '* '
msgid ""
"If you are writing app modules or drivers, become familiar with programs, "
"synthesizers or braille displays you wish to support (e.g. read "
"documentation, try using them, etc.)."
msgstr ""
"アプリモジュールまたはドライバを開発しているなら、サポートしようとするプログ"
"ラム、音声エンジン、または点字ディスプレイを十分に理解してください。例えば、"
"ドキュメントを読んだり、実際に動かして情報を収集しましょう。"
#. type: Bullet: '* '
msgid ""
"When defining commands (especially in global plugins), consult commands used "
"in NvDA and other add-ons first before assigning a new command in your add-"
"on to avoid command conflicts."
msgstr ""
"コマンド(特にグローバルプラグインにおいて)を定義する時、まずはNVDAや他のアド"
"オンで使われているコマンド操作を確認してください。これはアドオンの中で新しい"
"コマンドを割り当てるときに既存の操作との衝突を防ぐためです。"
#. type: Title ##
#, no-wrap
msgid "Useful modules from NVDA core"
msgstr "NVDAコアの有益なモジュール"
#. type: Plain text
msgid ""
"Throughout the life of add-on development, you'll come across some useful "
"modules from NvDA core that would be helpful in your add-on code. This "
"section explains them and some functions in those modules that would be "
"useful."
msgstr ""
"アドオンを開発していると、NVDAコアにはアドオン開発に役立つモジュールがたくさ"
"んあります。この節では有益なNVDAコアのモジュールやメソッドを説明します。"
#. type: Title ###
#, no-wrap
msgid "List of useful NVDA core modules and methods"
msgstr "有益なNVDAコアモジュールとメソッドのリスト"
#. type: Plain text
msgid ""
"The following lists available NVDA core modules and some useful methods "
"found in those modules:"
msgstr ""
"利用可能なNVDAコアのモジュールとそれらの中で利用可能な有益なメソッドのリスト"
"です:"
#. type: Bullet: '* '
msgid ""
"Addon Handler (addonHandler.py): The module which implements the add-on "
"subsystem. The addonHandler.initTranslation() method is used to initialize "
"internationalization support for your add-on."
msgstr ""
"Addon Handler (addonHandler.py): アドオンサブシステムを実装するモジュール。"
"addonHandler.initTranslation() メソッドはアドオンの国際化サポートの初期化で"
"す。"
#. type: Bullet: '* '
msgid ""
"NVDA basic API (api.py): A collection of core methods used throughout NVDA, "
"such as obtaining focus and navigator object, setting focus and so on. See "
"the next list on useful methods from this module."
msgstr ""
"NVDAの基本的なAPI(api.py):NVDA全体にわたって使われるコアメソッドの集合です。"
"フォーカスやナビゲーターオブジェクトの情報の取得、フォーカスの設定などが含ま"
"れます。このモジュールの有益なメソッドは次のリストを参照してください。"
#. type: Bullet: '* '
msgid ""
"App Module subsystem (appModuleHandler.py, appModules): The subsystem in "
"charge of handling app modules (see chapter on app modules for more "
"information)."
msgstr ""
"APP モジュールサブシステム(appModuleHandler.py、 appModules):APP モジュール"
"(詳細についてはAPP モジュールの章を見てください)を処理することを担当している"
"サブシステム。"
#. type: Bullet: '* '
msgid ""
"ARIA support (aria.py): Implements support for Accessible Rich Internet "
"Applications (ARIA)."
msgstr ""
"ARIAサポート(aria.py):アクセシブル・リッチ・インターネット・アプリケーション"
"(ARIA)のサポートを実装しています。"
#. type: Bullet: '* '
msgid ""
"Base object collection (baseObject.py): Contains useful base objects such as "
"scriptable objects (see the chapter on NvDA objects and overlay objects for "
"more information)."
msgstr ""
"ベースオブジェクトのコレクション(baseObject.py):スクリプト可能オブジェクトな"
"どの有益なベースオブジェクトを含んでいます。(詳細はNVDAオブジェクトやオーバー"
"レイオブジェクトの章を参照してください)"
#. type: Bullet: '* '
msgid ""
"Braille input and output subsystem (braille.py, brailleInput.py): Controls "
"braille output to and input from braille displays, needed by braille display "
"driver add-ons."
msgstr ""
"点字入出力サブシステム(braille.py, brailleInput.py) : 点字ディスプレイへの出"
"力と点字ディスプレイからの入力を制御します。点字ディスプレイドライバのアドオ"
"ンが必要とする機能です。"
#. type: Bullet: '* '
msgid ""
"Build-in modules (builtin.py): Allows access to builtin modules when working "
"with add-ons."
msgstr ""
"組み込みモジュール(builtin.py):アドオンからビルトインモジュールへのアクセス"
"を可能にします。"
#. type: Bullet: '* '
msgid ""
"Configuration (config): Manages configuration and profiles (profiles are "
"available in 2013.3 or later)."
msgstr ""
"設定(config):設定とプロファイル(プロファイルは2013.3以降で利用可能)を管理し"
"ます。"
#. type: Bullet: '* '
msgid ""
"Controls and states collection (controltypes.py): Includes dictionaries on "
"control types (roles) and possible states that a control can be in."
msgstr ""
"コントロールと状態のコレクション(controltypes.py):コントロールタイプ(ロー"
"ル)とそのコントロールが取り得る状態の辞書"
#. type: Bullet: '* '
msgid "Events (eventHandler.py): Handles various events such as gaining focus."
msgstr ""
"イベント(eventHandler.py):フォーカス取得などの様々なイベントを処理します。"
#. type: Bullet: '* '
msgid ""
"Global Commands collection (globalCommands.py): A list of global commands "
"available while using NVDA (see section on script scope for more "
"information)."
msgstr ""
"グローバルコマンドのコレクション(globalCommands.py):NVDAで利用可能なグローバ"
"ルコマンドのリスト(詳細はスクリプトスコープに関する章を参照してください)。"
#. type: Bullet: '* '
msgid ""
"Global Plugin subsystem (globalPluginHandler.py): The module needed for "
"controlling global plugins."
msgstr ""
"グローバルプラグインのサブシステム(globalPluginHandler.py):グローバルプラグ"
"インを制御するために必要なモジュール。"
#. type: Bullet: '* '
msgid ""
"NVDA GUI (gui): A collection of classes used by NVDA to display its messages "
"graphically. Includes GUI's for NVDA menu, add-on manager and others."
msgstr ""
"NVDA GUI (gui): メッセージを視覚的に表示するためにNVDAが使うクラスのコレク"
"ション。NVDAメニュー、アドオンマネージャー、その他のためのGUIを含みます。"
#. type: Bullet: '* '
msgid ""
"Hardware port utilities (hwPortUtils.py): A set of utilities for "
"communicating over serial and other hardware ports, useful during driver add-"
"on development."
msgstr ""
"ハードウェアポートユーティリティ(hwPortUtils.py):ハードウェアのシリアルポー"
"ト、及びその他のハードウェアポートと通信を行うアドオンを開発するさいに有益な"
"ユーティリティセット。"
#. type: Bullet: '* '
msgid ""
"IAccessible support (IAccessibleHandler.py, IAccessible objects): Used for "
"supporting IAccessible controls."
msgstr ""
"IAccessibleサポート(IAccessibleHandler.py、IAccessibleオブジェクト):"
"IAccessibleコントロールをサポートするために使います。"
#. type: Bullet: '* '
msgid "Input management (inputCore.py): Manages input from the user."
msgstr "入力管理(inputCore.py):ユーザからの入力を管理します。"
#. type: Bullet: '* '
msgid ""
"Java Access Bridge support (JABHandler.py): A collection of methods used for "
"supporting JAB subsystem used for Java applications."
msgstr ""
"JavaAccess Bridge サポート(JABHandler.py):Javaアプリケーションを使用するため"
"にJABサブシステムをサポートするメソッドのコレクション。"
#. type: Bullet: '* '
msgid ""
"Keyboard input (keyboardHandler.py): Supports entering commands from the "
"keyboard."
msgstr ""
"キーボード入力(keyboardHandler.py):キーボードからコマンドを入力する動作をサ"
"ポートします。"
#. type: Bullet: '* '
msgid ""
"Logging facility (logHandler.py): Allows a module to write logs to be viewed "
"by a developer or a user via Log Viewer."
msgstr ""
"ロギングファシリティー(logHandler.py):モジュールにログへの書き込み許可を与"
"え、それを開発者またはユーザはログ ビュアー経由で閲覧することができます。"
#. type: Bullet: '* '
msgid "Mouse support (mouseHandler.py): Supports mouse commands."
msgstr "マウスサポート(mouseHandler.py):マウスコマンドをサポートします。"
#. type: Bullet: '* '
msgid ""
"NvDA objects collection (NVDAObjects): A collection of NvDA objects or "
"controls used in many applications and standards such as UIA (User Interface "
"Automation)."
msgstr ""
"NvDAオブジェクトコレクション(NVDAObjects):多くのアプリケーションと、UIA(ユー"
"ザー・インターフェイス・オートメーション)のような一般的なユーザーインター"
"フェースで使われるNvDAオブジェクト、またはコントロールのコレクション。"
#. type: Bullet: '* '
msgid ""
"Scripts support (scriptHandler.py): Handles scripts, methods executed due to "
"the user pressing keyboard commands and other input."
msgstr ""
"スクリプトサポート(scriptHandler.py):キーボード入力やその他のコマンドをスク"
"リプト上から実行できるメソッドが収められています。"
#. type: Bullet: '* '
msgid "Speech output (speech.py): Controls speech output."
msgstr "音声出力(speech.py):音声出力をコントロールします。"
#. type: Bullet: '* '
msgid ""
"Synthesizer driver support (synthDriverHandler.py): This is the core module "
"needed for speech synthesizer add-ons."
msgstr ""
"音声エンジンドライバサポート(synthDriverHandler.py):これは音声エンジンドライ"
"バアドオンのために必要であったコアモジュールです。"
#. type: Bullet: '* '
msgid ""
"Widget text access (textInfos): Allows access to text for widget and "
"documents."
msgstr ""
"ウィジェットテキストアクセス(textInfos):ウィジェットドキュメントのためにテキ"
"ストへのアクセスを許可します。"
#. type: Bullet: '* '
msgid ""
"Touchscreen support (touchHandler.py): Provides support for touchscreen "
"input (installed versions only)."
msgstr ""
"タッチスクリーンサポート(touchHandler.py):タッチスクリーン入力のサポートを提"
"供します。(インストールバージョンのみ)"
#. type: Bullet: '* '
msgid "Tone output (tones.py): Allows the user to hear tones."
msgstr "音出力(tones.py):ユーザが音を聞くことを可能にします。"
#. type: Bullet: '* '
msgid ""
"User interface messages (ui.py): Includes ui.message method used to speak or "
"braille certain text."
msgstr ""
"ユーザー・インターフェース・メッセージ(ui.py):音声、または点字ディスプレイに"
"メッセージを出力するときに使用する、ui.messageメソッドをインクルードします。"
#. type: Bullet: '* '
msgid ""
"Virtual buffers (virtualBuffers): Handles virtual buffer documents such as "
"websites."
msgstr ""
"バーチャルバッファー(virtualBuffers):バーチャルバッファーハンドルはウェブサ"
"イトなどのドキュメントを処理します。"
#. type: Plain text
msgid ""
"The modules without .py extension are directories, containing specialist "
"modules."
msgstr ""
".py拡張子のないモジュールはディレクトリーであり、専門のモジュールを含んでいま"
"す。"
#. type: Title ###
#, no-wrap
msgid "Useful methods"
msgstr "有益なメソッド"
#. type: Plain text
msgid ""
"Here is a list of some useful methods used in add-ons. For more information "
"on how they're implemented, see the NvDA source code documentation. For "
"worked out examples, see the section of this guide on add-on components."
msgstr ""
"ここではアドオンの中で使用できるいくつかの有益なメソッドのリストを挙げます。"
"それらがどう実装されるかについての詳細については、NvDAソースコードドキュメン"
"トをご覧ください。具体的なサンプルについては、このガイドのアドオンセクション"
"の節をご覧ください。"
#. type: Plain text
msgid "From addonHandler:"
msgstr "From addonHandler:"
#. type: Bullet: '* '
msgid ""
"`addonHandler.initTranslation()`: Sets up the translation subsystem for add-"
"ons via Gettext."
msgstr ""
"`addonHandler.initTranslation()`: Gettext経由でアドオンのために翻訳サブシス"
"テムを設定します。"
#. type: Plain text
msgid "From api.py:"
msgstr "api.py:"
#. type: Bullet: '* '
msgid ""
"`api.getFocusObject()`: Retrieves the focused control (returns the object "
"with focus)."
msgstr ""
"`api.getFocusObject()`: フォーカスが当たっているオブジェクトを返します(オブ"
"ジェクトとフォーカスが戻ります)。"
#. type: Bullet: '* '
msgid ""
"`api.getNavigatorObject()`: Fetches the current navigator object. If NvDA is "
"set to follow system focus, the focus and navigator object will be the same, "
"otherwise a different object is returned."
msgstr ""
"`api.getNavigatorObject()`: クライアントのナビゲーターオブジェクトを取得しま"
"す。NvDAが、システムフォーカスに追随するように設定されているなら、フォーカス"
"とナビゲーターオブジェクトは同じになるでしょうし、そうでない場合は異なるオブ"
"ジェクトが返されます。"
#. type: Bullet: '* '
msgid ""
"`api.getForegroundObject()`: Returns the foreground window of the current "
"application (the parent of this object is the application itself)."
msgstr ""
"`api.getForegroundObject()`: クライアントのアプリケーションのフォアグランド"
"ウィンドウを返します(このオブジェクトの親はアプリケーション自身です)。"
#. type: Bullet: '* '
msgid ""
"These have a corresponding method to set certain object as the focus or "
"navigator object."
msgstr ""
"これらは、一定のオブジェクトをフォーカスまたはナビゲーターオブジェクトと取り"
"決めるメソッドを持っています。"
#. type: Plain text
msgid "From logHandler:"
msgstr "logHandler:"
#. type: Bullet: '* '
msgid "`logHandler.Log`: The class which implements logging facility."
msgstr "`logHandler.Log`: ロギング機能を実装するクラス。"
#. type: Plain text
msgid "From tones:"
msgstr "tones:"
#. type: Bullet: '* '
msgid ""
"`tones.beep(pitch in hertz, duration in milliseconds, left channel volume, "
"right channel volume)`: Plays a tone of specified pitch for specified "
"duration. The first two arguments are mandatory, while the other two are "
"optional."
msgstr ""
"`tones.beep(音程(Hz) , 音の長さ(MS), 左チャンネルのボリューム, 右チャンネ"
"ルのボリューム)`:指定の長さ、及び音程の音をならします。最初の2つの引数は必"
"須、残りの2つはオプションです。"
#. type: Plain text
msgid "From ui:"
msgstr "ui:"
#. type: Bullet: '* '
msgid ""
"`ui.message(message to be spoken/brailled)`: Speaks or brailles the message. "
"This should be a string surrounded by quotes."
msgstr ""
"`ui.message(音声または点字で出力するメッセージ)`: メッセージを音声出力、もし"
"くは点字ディスプレイに出力します。文字列はダブルコーテーションで囲む必要があ"
"ります。"
#. type: Plain text
msgid ""
"There are other useful methods out there, but the above are the most useful "
"ones. See the NVDA source code documentation for other methods, or see the "
"examples below on how these methods and others are used throughout the life "
"of an add-on."
msgstr ""
"他にも有益なメソッドがありますが、これまで挙げたものが最も有益なものです。他"
"のメソッドについてはNVDAソースコードドキュメントをご覧いただくか、これらのメ"
"ソッドとその他の有効範囲については、下記の例をご覧ください。"
#. type: Title ##
#, no-wrap
msgid "Add-on module components and development tips"
msgstr "アドオンモジュールコンポーネントと開発のヒント"
#. type: Plain text
msgid ""
"An add-on module consists of a number of components. This includes handling "
"input and output, working with different NvDA objects, reacting to events, "
"storing configuration and more."
msgstr ""
"アドオンモジュールは多くのコンポーネントから成り立っています。これは入出力を"
"取り扱う、別のNVDAオブジェクトを操作する、イベントに反応する、文字列を設定す"
"るなどといった操作が含まれています。"
#. type: Plain text
msgid ""
"This chapter introduces key components and concepts that are used in add-on "
"development, such as NVDA objects, scripts, event handling and additional "
"topics with examples."
msgstr ""
"この章では、NVDAオブジェクト、スクリプト、扱えるイベント、およびアドオン開発"
"に用いられるキーコンポーネントとコンセプト、追加のトピックなどと例を紹介しま"
"す。"
#. type: Plain text
msgid ""
"Note that the NVDA core development guide introduces the below concepts. "
"This chapter is intended as an extension of that document. Consult the NVDA "
"development guide for a brief introductions."
msgstr ""
"NVDAコア開発者ガイドでは下記のコンセプトに基づいて紹介することに注意してくだ"
"さい。この章はそのドキュメントの拡張を意図して書かれています。短く紹介するた"
"めNVDA開発者ガイドを参照してください。"
#. type: Title ###
#, no-wrap
msgid "Working with objects on screen"
msgstr "画面上のオブジェクトに働きかける"
#. type: Plain text
msgid ""
"An object is an instance of a class - that is, a class coming to life while "
"a program is running. For example, if a class called button has been "
"defined, the button on a screen is the object of this button class."
msgstr ""
"オブジェクトはクラスのインスタンスです - すなわち、プログラムが動いている間有"
"効なクラスです。例えば、ボタンというクラスが定義されたなら、スクリーンのボタ"
"ンはこのボタンクラスのオブジェクトです。"
#. type: Plain text
msgid ""
"In NVDA, an object is representation of a control or parts of a program. "
"This includes buttons, check boxes, edit fields, toolbars, sliders and even "
"the application window. These are organized into hierarchies, or parent-"
"child relationship where an object may contain child objects - for example, "
"a list object in Windows Explorer may contain one or more list items, and "
"the parent of this list might be the Windows Explorer window. The object "
"that you're examining right now is termed \"navigator object.\""
msgstr ""
"NVDAの中で、オブジェクトはプログラムのコントロールまたはその集合の表現です。"
"これはボタン、チェックボックス、エディットフィールド、ツールバー、スライダ、"
"およびアプリケーションウィンドウを含みます。これらは階層的に構成されるか、オ"
"ブジェクトが複数の子オブジェクトを含むかもしれません。例えば、Windowsエクスプ"
"ローラの中のリストオブジェクトは一個以上リストを含むかもしれませんし、このリ"
"ストの親はWindowsエクスプローラウィンドウであるかもしれません。あなたがちょう"
"ど今調査しているオブジェクトは「ナビゲーターオブジェクト」といいます。"
#. type: Plain text
msgid ""
"The NVDA objects (or simply called objects) contains a number of useful "
"properties or atributes. These include the object's name, its value "
"(checked, text of the edit window, etc.), role (check box, window, embedded "
"object, etc., location (screen coordinates) and more. NVDA objects also "
"contain useful methods for manipulating them, such as changing the value of "
"the object, reacting to events for the object (gains focus, value changed, "
"etc.) and so on."
msgstr ""
"NVDA オブジェクト(または単にオブジェクト)は、多くの有益なプロパティや属性を含"
"んでいます。これらはオブジェクトの名前、その値(チェック状態、編集ウィンドウの"
"テキストなど)、ロール(チェックボックス、ウィンドウ、埋め込みオブジェクトな"
"ど)、場所(スクリーン座標)などです。NVDAオブジェクトはまた、オブジェクトの"
"値を変更する、オブジェクトのイベントに反応する(フォーカスの移動、値の変化な"
"ど)、といった処理のための有益なメソッドを含んでいます。"
#. type: Plain text
msgid ""
"In many situations, an NvDA object may belong to a class of related objects. "
"For each object classes, NvDA provides ways of handling them. These classes "
"include IAccessible, JAB, UIA and so forth. These classes and behaviors for "
"each class of objects is defined in NVDAObjects directory in the NvDA source "
"code, and to use them in your add-on, import the appropriate object class "
"handler for the object you're using (e.g. if you're working with an "
"IAccessible object, impore NVDAObjects.IAccessible.)."
msgstr ""
"多くの状況において、NvDAオブジェクトは関連したオブジェクトのクラスに属するか"
"もしれません。それぞれのために、オブジェクトクラス、NvDAは、これらを扱う方法"
"を提供します。これらのクラスにはIAccessible、JAB、UIAなどを含みます。あなた"
"が、使っている(例えば、あなたがIAccessibleオブジェクト、impore NVDAObjects."
"IAccessibleに働きかけているならば。)オブジェクトのために、オブジェクトのクラ"
"スが、あなたのアドオンの中でNvDAソースコードと使用へのそれらの中のNVDAObjects"
"ダイレクトリーの中で定義したことであるそれぞれのためのこれらのクラスと反応は"
"適切なオブジェクトクラスハンドラをインポートします。"
#. type: Plain text
msgid ""
"Two of these object classes merit special mention: virtual buffers and tree "
"interceptors. A tree interceptor allows NvDA to work with a \"tree\" of "
"objects as though they are just one object. A special case of tree "
"interceptor is virtual buffer, which allows NVDA to work with complex "
"documents such as PDF documents."
msgstr ""
"バーチャルバッファーと、ツリーインターセプターのオブジェクトクラスの2つは特別"
"な言及に値しています。1つのオブジェクトであるかのように、ツリーインターセプ"
"ターは、NvDAがオブジェクトの\"tree\"によって働くことを可能にします。ツリーイ"
"ンターセプターの特殊な場合はバーチャルバッファーです(それは、NVDAがPDFドキュ"
"メントなどの複合ドキュメントによって動作することを可能にします)。"
#. type: Title ###
#, no-wrap
msgid "Examining object hierarchy"
msgstr "オブジェクトの階層構造を調べる"
#. type: Plain text
msgid ""
"There are a number of ways which you can use to see the hierarchy of an "
"object for a given program:"
msgstr ""
"与えられたプログラムのオブジェクト階層構造を見るために利用できる多くの方法が"
"あります:"
#. type: Bullet: '1. '
msgid ""
"Using object navigation commands (NvDA+Numpad 2/4/5/6/8) with simple review "
"mode turned off."
msgstr ""
"簡易レビューモードを無効にしてオブジェクトナビゲーションコマンド(NvDA+テン"
"キー 2/4/5/6/8)を使う。"
#. type: Bullet: '2. '
msgid ""
"Using Python Console, use obj.next/previous/parent/firstChild/lastChild "
"attributes. If you want to see all available properties, from mPython "
"Console, type dir(obj)."
msgstr ""
"Pythonコンソールを使って、obj.next/previous/parent/firstChild/lastChild アト"
"リビュートを使う。参照可能なすべてのプロパティをPythonコンソールから見たいな"
"らば、dir(obj)とタイプしてください。"
#. type: Plain text
msgid ""
"If you wish to see a more detailed description about the navigator object, "
"while the navigator object is located at the object you're interested in, "
"press NvDA+F1 to launch log viewer. The root of all objects in Windows is "
"the desktop, or shell object."
msgstr ""
"ナビゲーターオブジェクトについてさらに詳細な説明をご覧になりたい場合は、NvDA"
"+F1を押してログビュアーを起動してください。Windowsの中のすべてのオブジェクト"
"のルートはデスクトップまたは空のオブジェクトです。"
#. type: Title ###
#, no-wrap
msgid "Focus vs. navigator object"
msgstr "フォーカスとナビゲーターオブジェクト"
#. type: Plain text
msgid ""
"In your add-on, you might wish to work with various objects and manipulate "
"them. These may include changing the focused object, synchronizing navigator "
"and focus objects, changing the role of an object and so on."
msgstr ""
"アドオンを使って様々なオブジェクトによって操作する ことを望むかもしれません。"
"これらは、フォーカスが当たった、オブジェクトを入れ替える、ナビゲータオブジェ"
"クトとフォーカスオブジェクトを同期させる、オブジェクトロールを変更するなどと"
"いった操作を含むかもしれません。"
#. type: Plain text
msgid ""
"A focus object is the currently focused control. These are linked to "
"keyboard focus - that is, it follows the highlighted control. In contrast, a "
"navigator object is the object you're interested in. Since navigator objects "
"can move anywhere, you can examine two objects at once: the focused object "
"and the navigator object. For instance, you might be focused on an edit "
"field while examining the title bar as the navigator object."
msgstr ""
"フォーカスオブジェクトは、現在フォーカスが当たっているフォーカスをコントロー"
"ルします。これらはキーボードの位置と結び付きます - つまり、それはハイライトさ"
"れたコントロールにリンクしています。対照的に、ナビゲーターオブジェクトは、あ"
"なたが注目しているオブジェクトです。ナビゲータオブジェクトはどこにでも移動す"
"ることができるので、すぐにフォーカスオブジェクトとナビゲーターオブジェクトの2"
"つのオブジェクトを調査することができます。例えば、ナビゲーターオブジェクトと"
"してタイトル・バーを調査しているときに、エディットフィールドにフォーカスが合"
"うかもしれません。"
#. type: Plain text
msgid ""
"In your add-on, to fetch the object with focus, write `someObj = api."
"getFocusObject()`. The someObj can be named differently - the convention is "
"to use the name \"obj\". To fetch the navigator object (which might be "
"different from the focused object), use `obj = api.getNavigatorObject()`."
msgstr ""
"アドオンの中で、フォーカスによってオブジェクトを取得するには、`someObj = api."
"getFocusObject()` と記述します。someObjは別の名前にすることができます - 書き"
"方は、name \"obj\" を使うことになっています。ナビゲーターオブジェクト(フォー"
"カスが合ったオブジェクトと違うかもしれません)を取得するために、`obj = api."
"getNavigatorObject()` を使用します。"
#. type: Title ###
#, no-wrap
msgid "Other useful object-related goodies"
msgstr "他の有益なオブジェクト"
#. type: Plain text
msgid ""
"Here are some other methods which works with NVDA objects, all located in "
"api.py module:"
msgstr ""
"ここには他のメソッドがあります、すべてapi.pyモジュールに格納されており、NVDA"
"オブジェクトとして動作します:"
#. type: Bullet: '* '
msgid ""
"If you wish to obtain the foreground object (useful if you wish to look at "
"some child object of the foreground window), use `obj = api."
"getForegroundObject()`."
msgstr ""
"フォアグラウンドの目標(フォアグラウンドウィンドウのある子オブジェクトを見たい"
"なら便利です)を達することを望むならば、`obj = api.getForegroundObject()` を使"
"用します。"
#. type: Bullet: '* '
msgid ""
"From Python Console, to see the number of child objects that an object "
"contains (for instance, the children, or widgets of a foreground window), "
"type `obj.childCount`. The value 0 means that there are no more child "
"objects."
msgstr ""
"オブジェクトが含んでいる(例えばフォアグランドウィンドウの子またはウィジェッ"
"ト)子オブジェクトの数を見るには、Pythonコンソールから、`obj.childCount` とを"
"タイプします。値0は、もう、子オブジェクトがないことを意味しています。"
#. type: Bullet: '* '
msgid ""
"To set some object as the new focus or navigator object, use `api."
"setFocusObject(obj)` or `api.setNavigatorObject(obj)`."
msgstr ""
"あるオブジェクトを新しいフォーカスまたはナビゲーターオブジェクトと指定するに"
"は、`api.setFocusObject(obj)` または`api.setNavigatorObject(obj)` を使用して"
"ください。"
#. type: Bullet: '* '
msgid ""
"You can fetch various properties of an object by specifying obj.property "
"where property is the attribute you wish to see (e.g. obj.value)."
msgstr ""
"プロパティを閲覧すること、 希望するアトリビュートであるobj.propertyを指定する"
"ことによってオブジェクトの様々なプロパティを取得することができます。(例えば "
"obj.value)"
#. type: Title ###
#, no-wrap
msgid "Example 1: Finding the value of a slider in a program"
msgstr "サンプル1:プログラムのスライダの値を取得する"
#. type: Plain text
msgid ""
"Suppose you are asked by a user to give him the value of a slider in a "
"program using an app module. After looking at the object hierarchy and other "
"properties, you know that the toolbar is the last child of the foreground "
"object."
msgstr ""
"あなたがユーザから、使っているプログラムの中のスライダの値を通知するようにし"
"てほしいと頼まれたとします。オブジェクトツリー構造他のプロパティーを見た後"
"に、あなたは、ツールバーがフォアグランドオブジェクトの最後の子供であると分か"
"りました。"
#. type: Plain text
msgid "Here is the code to implement this feature:"
msgstr "下記にその機能を実装するコードを示します:"
#. type: Plain text
#, no-wrap
msgid "\t# Object example 1\n"
msgstr "\t# オブジェクトサンプル 1\n"
#. type: Plain text
#, no-wrap
msgid ""
"\timport api\n"
"\timport appModuleHandler\n"
msgstr ""
"\timport api\n"
"\timport appModuleHandler\n"
#. type: Plain text
#, no-wrap
msgid "\t\tsliderChildIndex = -1 # The variable to store the child index.\n"
msgstr "\t\tsliderChildIndex = -1 # 子インデックスを格納する変数。\n"
#. type: Plain text
#, no-wrap
msgid ""
"\t\tdef getSliderValue(self):\n"
"\t\t\tfg = api.getForegroundObject()\n"
"\t\t\tsliderVal = fg.children[self.sliderChildIndex].value\n"
"\t\t\treturn sliderVal\n"
msgstr ""
"\t\tdef getSliderValue(self):\n"
"\t\t\tfg = api.getForegroundObject()\n"
"\t\t\tsliderVal = fg.children[self.sliderChildIndex].value\n"
"\t\t\treturn sliderVal\n"
#. type: Plain text
msgid ""
"In this code, the method `fg.children[index]` is used to retrieve the child "
"with the given index (here, since we said the toolbar is the last child, the "
"index would be minus 1, or the very last child; we could have used fg."
"lastChild)."
msgstr ""
"このコードの中で、`fg.children[index]` メソッドは、与えられたインデックスを"
"持つ子供を指定ために使われます(ここでは、ツールバーが最後の子供ということなの"
"で、インデックスはマイナス1、またはまさに最後の子供、fg.lastChild)を用いるか"
"もしれません)"
#. type: Plain text
msgid ""
"However, this code has an issue: what if the slider value is actually within "
"the first child of the actual slider control? One way to fix this is to "
"check the object's role. The modified code looks like this:"
msgstr ""
"しかし、このコードには問題があります:スライダの値が実際のスライダコントロー"
"ルの最初の子供の中にある場合はどうでしょうか?これを直す1つの方法は、オブジェ"
"クトのロールをチェックすることです。修正されたコードはこのようになります:"
#. type: Plain text
#, no-wrap
msgid ""
"\tdef getSliderValue(self):\n"
"\t\tfrom controltypes import ROLE_SLIDER # It is possible to import from within a method.\n"
"\t\tfg = api.getForegroundObject()\n"
"\t\tslider = fg.lastChild\n"
"\t\tif slider.role == ROLE_SLIDER: return slider.firstChild.value\n"
msgstr ""
"\tdef getSliderValue(self):\n"
"\t\tfrom controltypes import ROLE_SLIDER # メソッドをインポートしています\n"
"\t\tfg = api.getForegroundObject()\n"
"\t\tslider = fg.lastChild\n"
"\t\tif slider.role == ROLE_SLIDER: return slider.firstChild.value\n"
#. type: Plain text
msgid ""
"Thus, when we know for sure that we're dealing with the slider, the method "
"returns the value of the slider's first child (if that is the case). Note "
"the two equals signs for equality, as opposed to just one equals sign for "
"assignment."
msgstr ""
"従って、スライダーとやりとりしていると確かに分かっているときには、メソッド"
"は、スライダの最初の子供の値を戻します(このケースの場合)。1つの等号と同等に、"
"2つの対照的な等号についても言及してください。"
#. type: Plain text
msgid ""
"There are other examples you can try to familiarize yourself with object "
"navigation and manipulation:"
msgstr ""
"あなた自身でオブジェクトナビゲーションとマニピュレーションに慣れるために、他"
"にもサンプルがあります:"
#. type: Bullet: '* '
msgid ""
"Obtaining the name of an object that is located somewhere else in the "
"program."
msgstr "他のどこかあるいはプログラム内にあるオブジェクトの名前を取得します。"
#. type: Bullet: '* '
msgid "Moving the navigator to the foreground object."
msgstr "ナビゲータをフォアグランドオブジェクトに移動させます。"
#. type: Bullet: '* '
msgid "Setting focus to another program."
msgstr "フォーカスを別のプログラムに設定します。"
#. type: Plain text
msgid ""
"For real-life examples on objects in NvDA, consult the NvDA source code or "
"source codes of various community add-ons."
msgstr ""
"NvDAオブジェクト上の例は、NvDAソースコードまたは様々なコミュニティアドオンの"
"ソースコードを参照してください。"
#. type: Title ###
#, no-wrap
msgid "Specialist objects and overriding object properties at runtime"
msgstr "専門のオブジェクトとオーバーライドされたオブジェクトのランタイムのプロパティ"
#. type: Plain text
msgid ""
"Sometimes, it is not enough to work with default behavior for a control. For "
"example, some parts of a program may need custom gestures, or one may need "
"to change the role of a window to that of a button."
msgstr ""
"時々、省略時デフォルトの動作では十分ではないことがあります。例えば、プログラ"
"ムのいくつかの部分にはカスタムのゼスチャーが必要かもしれませんし、あるいは"
"ウィンドウのロールボタンをそれに変更する必要があるかもしれません。"
#. type: Plain text
msgid ""
"NVDA provides two methods for creating specialist, or overlay objects (or "
"classes), each suited for different needs:"
msgstr ""
"NVDAは、専門クリエイターのための2つのメソッドを提供します、または違うニーズに"
"それぞれ適した反対のオーバーレイ(またはクラス)を作成します:"
#. type: Bullet: '* '
msgid ""
"`event_NvDAObject_init(self, object we're dealing with)`: If you wish to "
"override certain attributes of a control such as its role or label (name), "
"you can use this method to ask NvDA to take your \"input\" to account when "
"meeting objects for the first time (or initialized). For instance, if the "
"control has the window class name of TForm (seen on many Delphi "
"applications), you can ask NVDA to treat this control as a standard window "
"by assigning obj.role = ROLE_WINDOW (see control types dictionary for list "
"of available roles)."
msgstr ""
"`event_NvDAObject_init(self,` 我々が扱っているオブジェクト `)` : そのロールま"
"たはラベル(名前)などの制御の一定のアトリビュートを無効にしたいときに、NvDAに"
"初めから(または初期設定されている)オブジェクトと会う時にあなた\"input\"を記述"
"するためにこのメソッドを使うことができます。例えば、コントロールが、TForm(多"
"くのDelphiアプリケーション上で見られます)のウィンドウ・クラス名を持っているな"
"ら、NVDAに `obj.role = ROLE_WINDOW` (入手可能なロールのリストのために制御タイ"
"プ辞書を参考にしてください)を割り当てることによってこの制御を標準ウィンドウと"
"して扱うことができます。 "
#. type: Bullet: '* '
msgid ""
"`chooseNVDAObjectOverlayClasses(self, object, list of classes)`: This allows "
"NVDA to use your own logic when dealing with certain objects. For example, "
"this is useful if you wish to assign custom gestures for certain parts of a "
"program in your app module (in fact, many app modules creates objects to "
"deal with certain parts of a program, then uses "
"chooseNvDAObjectOverlayClasses to select the correct object when certain "
"conditions are met). These custom objects must be based on a solid object "
"that we wish to eeal with (mostly IAccessible is enough, thus most overlay "
"objects inherit from, or is the child or specialist class of IAccessible "
"objects)."
msgstr ""
"`chooseNVDAObjectOverlayClasses(self, object, list of classes)`: これは、NVDA"
"が一定のオブジェクトを扱う時にあなた自身のロジックを使うことを可能にします。"
"例えば、カスタムジェスチャーを、APP モジュール(実のところ、プログラムの一定の"
"部分を扱うために、多くのアプリモジュールはオブジェクトを作成し、そして、一定"
"の条件が満たされている時に、正しいオブジェクトを選ぶために、"
"chooseNvDAObjectOverlayClassesを使います)中のプログラムの一定の部分に割り当て"
"たい場合に有益です。これらのカスタムのオブジェクトは、eealに対する堅固なオブ"
"ジェクトに基づかなければなりません(たいてい、ほとんどのオーバーレイオブジェ"
"クトがそのオブジェクトから継承されるか、またはIAccessibleオブジェクトの子供ま"
"たはスペシャリストクラスであるので、IAccessibleは十分です)。"
#. type: Plain text
msgid ""
"Note that in case of the second method, the class(s) with the given name "
"must be present in the file, which is/are inherited from a known base object "
"(in Python, the syntax for the inheritence is `childClass(baseClass)`, and "
"is usually read as, \"this child class inherits from this base class\". "
"We'll see code like this later)."
msgstr ""
"第2の方法の場合には、与えられた名前を持ったクラスがファイルの中にあることに注"
"目し、どれがあるか、既知のベース・オブジェクト(Pythonでは、inheritenceのため"
"の構文は`childClass(baseClass)`であり、また通常は読まれて、\"この子どもクラス"
"はその基底クラスから継承する\"\"」後でこのようなコードに遭遇するでしょう)から"
"継承されます。"
#. type: Title ###
#, no-wrap
msgid "Examples of overlay classes and modified roles"
msgstr "オーバーレイクラスとロールの変更のサンプル"
#. type: Plain text
msgid ""
"Below examples illustrate the uses of the two overlay and attribute "
"modification methods we've discussed above:"
msgstr "上記で議論した2つのオーバーレイと属性変更のメソッドの例です:"
#. type: Plain text
msgid "An example of the first case: modifying an atribute."
msgstr "最初のケースのサンプル:アトリビュートを修正します。"
#. type: Plain text
#, no-wrap
msgid ""
"\t# Reassign some Delphi forms as window.\n"
"\t\tdef event_NvDAObject_init(self, obj):\n"
"\t\t\tif obj.windowClassName == \"TForm\": obj.role = ROLE_WINDOW\n"
msgstr ""
"\t# ウィンドウとしていくつかのDelphiフォームウインドウを再割り当てする。\n"
"\t\tdef event_NvDAObject_init(self, obj):\n"
"\t\t\tif obj.windowClassName == \"TForm\": obj.role = ROLE_WINDOW\n"
#. type: Plain text
msgid ""
"This means that whenever we encounter a window with the class name of \"TForm"
"\", NvDA will treat this as a normal window."
msgstr ""
"これは、\"TForm\" のクラス名を持つウィンドウに遭遇する時はいつでも、NvDAがこ"
"れを正常なウィンドウとして扱うということを意味しています。"
#. type: Plain text
msgid ""
"Example 2 deals with an app module which has two objects for dealing with "
"specific parts of a program, then uses chooseNVDAObjectOverlayClasses to "
"assign the logic for each control."
msgstr ""
"サンプル2は、プログラムの具体的な部分を扱うために、2つのオブジェクトを持って"
"いるアプリモジュールを扱い、そして、ロジックを各コントロールに割り当てるため"
"に、chooseNVDAObjectOverlayClassesを使います。"
#. type: Plain text
#, no-wrap
msgid "\t#An example of overlay classes\n"
msgstr "\t#オーバーレイクラスのサンプル\n"
#. type: Plain text
#, no-wrap
msgid ""
"\tclass enhancedEdit(IAccessible):\n"
"\t\t# Some code to be run when window class name is MyEdit.\n"
msgstr ""
"\tclass enhancedEdit(IAccessible):\n"
"\t\t# ウィンドウ・クラス名がMyEditの時に実行されるコード。\n"
#. type: Plain text
#, no-wrap
msgid ""
"\tclass MainWindow(IAccessible):\n"
"\t\t# Another code, this time adding custom gestures for main window of the program.\n"
msgstr ""
"\tclass MainWindow(IAccessible):\n"
"\t\t# プログラムの主要なウィンドウのために今回カスタムのゼスチャーを追加している別のコード。\n"
#. type: Plain text
#, no-wrap
msgid "\t# In the app module:\n"
msgstr "\t# アプリモジュールの中身:\n"
#. type: Plain text
#, no-wrap
msgid ""
"\tdef chooseNVDAObjectOverlayClasses(self, obj, clsList):\n"
"\t\tif obj.windowClassName == \"myEdit\": clsList.insert(0, enhancedEdit)\n"
"\t\telif obj.windowClassName == \"TWindow\": clsList.insert(0, mainWindow)\n"
msgstr ""
"\tdef chooseNVDAObjectOverlayClasses(self, obj, clsList):\n"
"\t\tif obj.windowClassName == \"myEdit\": clsList.insert(0, enhancedEdit)\n"
"\t\telif obj.windowClassName == \"TWindow\": clsList.insert(0, mainWindow)\n"
#. type: Plain text
msgid ""
"In both cases, the object that we wish to check must be inserted as the "
"first element of the clsList. The effect is that these custom objects will "
"take precedence when looking up gestures or code (behavior) for the object, "
"and in the developer info, these custom objects will come first when MRO "
"(Method Resolution Order) for the navigator object is displayed."
msgstr ""
"両方の場合に、私達がチェックするオブジェクトはclsListの第1エレメントとして挿"
"入されなければなりません。効果は、これらのカスタムオブジェクトがオブジェクト"
"のために、そして開発者情報においてゼスチャーまたはコード(反応)を探す時に優先"
"するでしょうし、ナビゲーターオブジェクトのためのMRO(メソッド選択次数)が表示さ"
"れる時に、これらのカスタムオブジェクトが最初に来るであろうということです。"
#. type: Title ###
#, no-wrap
msgid "Input and output: scripts and UI messages"
msgstr "スクリプトとUIメッセージの入出力:"
#. type: Plain text
msgid ""
"Another crucial component of add-ons is handling commands from users and "
"displaying what the add-on is doing. These are done via scripts (input) and "
"UI messages (output)."
msgstr ""
"アドオンの別の重要な部分は、ユーザからコマンドを処理して、アドオンがなにをし"
"ているかを表示しています。これらはスクリプト(入力)とUIメッセージ(出力)経由で"
"されます。"
#. type: Plain text
msgid ""
"A script is a method run when the user performs certain commands. For "
"example, when you press NvDA+T, NVDA runs a script in global commands module "
"called SayTitle. In Poedit, for instance, when a translator presses Control"
"+Shift+A, NvDA will read translator comments added by the programmer to help "
"clarify a given translatable string. this command is not a native NvDA "
"command, but it is defined in the Poedit app module to perform this function."
msgstr ""
"ユーザが一定のコマンドを実行した時に、スクリプトはメソッドを実行します。例え"
"ば、NvDA+Tを押した時、NVDAはグローバルコマンドモジュールのなかのSayTitleを呼"
"びます。例えば、Poeditにおいて、翻訳者がControl+Shift+Aを押した時、NvDAは、ト"
"ランスレータコメントが、与えられた翻訳可能である文字列を明確にするのを手助け"
"するプログラマによって、このコマンドはネイティブのNvDAコマンドではないと記述"
"されていますが、それは、この関数を実行するためにPoeditアプリモジュールの中で"
"定義されています。"
#. type: Plain text
msgid ""
"Typically, an add-on which accepts scripts will have a list of command:"
"function map somewhere in the module. The simplest is a gestures (commands) "
"dictionary, a python dictionary (typically named __gestures) which holds "
"commands as keys and scripts as values for these keys (more than one key, or "
"command can be bound to scripts). These dictionaries are loaded when add-on "
"loads and is cleared when either NvDA exits or the app for the app module "
"loses focus (that is, the user has switched to another program)."
msgstr ""
"一般的に、スクリプトを受け入れるアドオンはモジュールの中にコマンド:関数の"
"マップのリストをどこかに持っているでしょう。これらのキー(1より多くはキー入力"
"するか、コマンドはスクリプトと結合することができます)のために、最も簡単なもの"
"は、ゼスチャー(コマンド)辞書、キーとしてコマンドを保持するPython辞書(一般に"
"___gestures と名付けられる)、および値としてのスクリプトです。NvDAが終了する"
"か、アプリモジュールのためのアプリのどちらかが、フォーカスを失う時(すなわち、"
"ユーザは別のプログラムに切り換えたということ)、アドオンが読み込まれ、クリーン"
"にされる時に、これらの辞書が読み込まれます。"
#. type: Plain text
msgid ""
"Another way to bind scripts is via runtime insertion. This is done by "
"creating another gestures dictionary apart from __gestures dictionary which "
"holds context-sensitive gestures such as manipulating a single control. Then "
"the developer would use inputCore.bindGesture (or inputCore.bindGestures if "
"more than one gestures/scripts are defined) to define certain gestures for a "
"time, then using inputCore.clearGestures then inputCore."
"bindGestures(__gestures) to remove the added gestures. A more elegant way, "
"which involves scripts for specific objects, will be covered when we talk "
"about overlay classes."
msgstr ""
"スクリプトを関連づける別の方法はランタイム経由で挿入することです。これは、単"
"独のコントロールを処理するなどのコンテキストに反応するゼスチャーを保持する "
"`__gestures` 辞書とは別に、別のゼスチャー辞書を作成することによって行われま"
"す。そして、開発者は、一時の間一定のゼスチャーを定義し、それから追加されたゼ"
"スチャーを削除するために `inputCore.clearGestures` それから `inputCore."
"bindGestures(__gestures)` を使うために、 `inputCore.bindGesture` (または、複"
"数のゼスチャー/スクリプトが定義されるならば `inputCore.bindGestures` )を使う"
"でしょう。オーバーレイクラスについて述べるときに、特化したオブジェクトがスク"
"リプトに関係しているより完結な方法がカバーされているでしょう。"
#. type: Plain text
msgid ""
"As of time of writing, NvDA supports input from the keyboard, braille "
"dislays with or without braille keyboard and touchscreens."
msgstr ""
"現在、NvDAは点字キーボードがあるかどうかにかかわらず、キーボード、点字ディス"
"プレイ、タッチスクリーンからの入力をサポートします。"
#. type: Title ###
#, no-wrap
msgid "Example 2: A basic script dictionary"
msgstr "サンプル2:基本的なスクリプト辞書"
#. type: Plain text
msgid ""
"In this example, we'll define two scripts called \"sayHello\" and say"
"\"GoodBye\", then bind them into two separte gestures."
msgstr ""
"このサンプルは、\"sayHello\"と\"GoodBye\"という2つのスクリプトを定義し、2つの"
"異なるゼスチャーにこれらを結びつけます。"
#. type: Plain text
#, no-wrap
msgid ""
"\t# An example fragment for script assignment.\n"
"\timport ui\n"
msgstr ""
"\t# -*- coding: utf-8 -*- \n"
"\t# 日本語を出力する場合に上記の4項が必要\n"
"\t# このファイルはUTF-8で保存してください。\n"
"\t# サンプルスクリプト指定のためのフラグメント。\n"
"\timport ui\n"
#. type: Plain text
#, no-wrap
msgid ""
"\tdef script_sayHello(self, gesture):\n"
"\t\tui.message\"Hello!\")\n"
msgstr ""
"\tdef script_sayHello(self, gesture):\n"
"\t\tui.message(u\"こんにちは!\")\n"
#. type: Plain text
#, no-wrap
msgid ""
"\tdef script_sayGoodBye(self, gesture):\n"
"\t\tui.message(\"Good Bye!\")\n"
msgstr ""
"\tdef script_sayGoodBye(self, gesture):\n"
"\t\tui.message(u\"さようなら!\")\n"
#. type: Plain text
#, no-wrap
msgid ""
"\t__gestures={\n"
"\t\t\"kb:control+NVDA+1\":\"sayHello\",\n"
"\t\t\"kb:Control+NVDA+2\":\"sayGoodBye\"\n"
"\t}\n"
msgstr ""
"\t__gestures={\n"
"\t\t\"kb:control+NVDA+1\":\"sayHello\",\n"
"\t\t\"kb:Control+NVDA+2\":\"sayGoodBye\"\n"
"\t}\n"
#. type: Plain text
msgid ""
"Now when you press Control+NvDA+1, NvDA will say, \"Hello\", and when you "
"press Control+NvDA+2, NVDA will say, \"Good bye.\""
msgstr ""
"今、Ctrl+NvDA+1を押すと、NvDAは\"こんにちは!\"というでしょう。また、Ctrl"
"+NvDA+2を押すと、NVDAは\"さようなら!\"と言うでしょう。"
#. type: Title ###
#, no-wrap
msgid "Example 3: runtime script insertion/removal"
msgstr "サンプル3:ランタイムスクリプト挿入/削除"
#. type: Plain text
#, no-wrap
msgid "\t# Future sections #\n"
msgstr "\t# 将来のセクション #\n"
#. type: Plain text
msgid "Please delete this notice when appropriate sections are done."
msgstr "適切なセクションが実行される時、この通知を削除してください。"
#. type: Title ##
#, no-wrap
msgid "Add-on components and development tips"
msgstr "アドオンコンポーネントと開発のヒント"
#. type: Plain text
msgid ""
"Includes introductions to input and scripts, output systems, objects, "
"events, configuration, add-on settings and reloading plug-ins. Also includes "
"some tips on add-on development such as debugging. It concludes with some "
"useful examples and do's and don'ts."
msgstr ""
"入力とスクリプトの紹介と、出力システム、オブジェクト、イベント、設定、アドオ"
"ンの設定、および再読込されるプラグインを含みます。また、デバッグなどのアドオ"
"ン開発についてのいくつかの秘訣を含みます。それはいくつかの役に立つ例と、正し"
"い、間違っている例です。"
#. type: Plain text
msgid ""
"Planned sections (please feel free to contribute your knowledge in this "
"section):"
msgstr ""
"計画中のセクション(このセクションにあなたの知識を寄与していてください):"
#. type: Bullet: '* '
msgid "Introduction to NVDA objects."
msgstr "NVDAオブジェクトを紹介します。"
#. type: Bullet: '* '
msgid "Examining object attributes with Python Console."
msgstr "Python コンソールで使用できる試験オブジェクト属性。"
#. type: Bullet: '* '
msgid "Fetching and setting objects."
msgstr "取得及び設定するオブジェクト。"
#. type: Bullet: '* '
msgid ""
"Object hierarchy and differences between regular and simple review modes."
msgstr "通常のおよび簡単なレビューモードとオブジェクト階層構造の違い。"
#. type: Bullet: '* '
msgid "The event_NVDAObject_init and chooseNVDAObjectOverlayClasses methods."
msgstr ""
"event_NVDAObject_init メソッドと chooseNVDAObjectOverlayClasses メソッド."
#. type: Bullet: '* '
msgid "Events and list of available events."
msgstr "イベントと入手可能なイベントのリスト。"
#. type: Bullet: '* '
msgid "Next handlers."
msgstr "Next handlers."
#. type: Bullet: '* '
msgid ""
"Input from keyboard, braille displays, mouse and touchscreen via scripts."
msgstr ""
"スクリプト経由でキーボード、点字ディスプレイ、マウス、およびタッチスクリーン"
"からの入力。"
#. type: Bullet: '* '
msgid "Script lookup process and conflicts."
msgstr "スクリプトのルックアップ過程と競合について。"
#. type: Bullet: '* '
msgid ""
"Static and dynamic script bindings, gesture dictionaries and script "
"categories."
msgstr ""
"静的かつ動的なスクリプト割り当て、ゼスチャー辞書、およびスクリプトカテゴリ。"
#. type: Bullet: '* '
msgid "Braille, speech and tone output."
msgstr "点字、音声、及び音の出力"
#. type: Bullet: '* '
msgid "Debugging add-ons."
msgstr "アドオンのデバッグ。"
#. type: Bullet: '* '
msgid "If something goes wrong (common errors and exceptions)."
msgstr "もし何らかの警告(エラー及び例外)が発生したら。"
#. type: Bullet: '* '
msgid "Few working and non-working examples for each topic."
msgstr "各トピックのうまく動く例とうまく動かない例。"
#. type: Bullet: '* '
msgid "These plan sections may change."
msgstr "これらのセクションの計画は変更されるかもしれません。"
#. type: Title ##
#, no-wrap
msgid "Global Plugins"
msgstr "グローバルプラグイン"
#. type: Plain text
msgid "A chapter devoted to global plugins."
msgstr "グローバルプラグインを解説する章。"
#. type: Plain text
msgid "Planned sections:"
msgstr "計画中のセクション:"
#. type: Bullet: '* '
msgid "What exactly is global plugin."
msgstr "グローバルプラグインとは何か。"
#. type: Bullet: '* '
msgid ""
"Importance of consulting NvDA and add-on commands to minimize command "
"conflicts."
msgstr ""
"NvDAとアドオンを作成するときに重要なことは、コマンド競合を最小限にすることで"
"す。"
#. type: Bullet: '* '
msgid "When not to use global plugins."
msgstr "グローバルプラグインを使うべきでない時。"
#. type: Bullet: '* '
msgid "A few worked out examples."
msgstr "少し具体的な例。"
#. type: Bullet: '* '
msgid "These sections may change."
msgstr "これらのセクションは変更されるかもしれません。"
#. type: Title ##
#, no-wrap
msgid "App Modules"
msgstr "アプリモジュール"
#. type: Plain text
msgid "A chapter devoted to app modules."
msgstr "アプリモジュールの章。"
#. type: Bullet: '* '
msgid "What is an app module."
msgstr "アプリモジュールとはなにか。"
#. type: Bullet: '* '
msgid "App module scripts."
msgstr "アプリモジュールスクリプト。"
#. type: Bullet: '* '
msgid "Defining objects representing different parts of a program."
msgstr "プログラムのさまざまな部分に対応するオブジェクト。"
#. type: Bullet: '* '
msgid "Silencing NVDA for a program."
msgstr "あるプログラムのためにNVDAで音声を出さなくする。"
#. type: Bullet: '* '
msgid "How app developers can help NVDA users through accessible app designs."
msgstr ""
"どうすればアプリケーション開発者が、アクセシブルなアプリ設計を通してNVDAユー"
"ザを助けることができるのでしょうか。"
#. type: Bullet: '* '
msgid ""
"A few worked out examples and examples from existing app modules from NVDA "
"core and from community."
msgstr ""
"NVDAコアそしてコミュニティから、既存のアプリモジュールの例を考え出しました。"
#. type: Bullet: '* '
msgid "These topics may change."
msgstr "これらのトピックは変更されるかもしれません。"
#. type: Title ##
#, no-wrap
msgid "Drivers"
msgstr "ドライバー"
#. type: Plain text
msgid "A chapter devoted to driver development."
msgstr "ドライバ開発者のための章。"
#. type: Title ##
#, no-wrap
msgid "Misc items"
msgstr "その他の項目"
#. type: Plain text
msgid ""
"Includes Bitbucket repo, add-ons lisst, other topics and contact information."
msgstr ""
"Bitbucketレポート、アドオンリスト、他のトピック、および連絡先を含んでいます。"
#. type: Plain text
msgid ""
"[1]: http://community.nvda-project.org/wiki/Development [2]: http://"
"community.nvda-project.org/documentation/developerGuide.html"
msgstr ""
"[1]: http://community.nvda-project.org/wiki/Development [2]: http://"
"community.nvda-project.org/documentation/developerGuide.html"
アドオン開発者ガイド(英語版)が下記 GitHub Wiki に移動しました。
https://github.com/nvdaaddons/DevGuide/wiki/NVDA-Add-on-Development-Guide
NVDA Developer Guide の内容と重複する部分はありますが、アドオン開発ガイドが昨年末に公開され、翻訳チームの subversion リポジトリにコミットすれば日本語化ができる状態になっています。
原文 NVDA Add-on Development Guide
http://addons.nvda-project.org/devDocs/devDocs.en.html
アドオンをソースからビルドする方法についてお問い合わせがありましたが、これもこのドキュメントでカバーされている内容です。
関連チケット
#31036 NVDA Developer Guide 日本語化
https://sourceforge.jp/ticket/browse.php?group_id=4221&tid=31036