diff --git a/.gitignore b/.gitignore index 1de9c8ee9..2f0cd5aca 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /lib/libpq.dll /lib/pg/postgresql_lib_path.rb /test_trace.out +/translation/po/en.pot diff --git a/README.ja.md b/README.ja.md index b18904076..02a42a76a 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,7 +1,7 @@ # pg * ホーム :: https://github.com/ged/ruby-pg -* ドキュメント :: http://deveiate.org/code/pg (英語)、 https://deveiate.org/code/pg/README_ja_md.html (日本語) +* ドキュメント :: http://deveiate.org/code/pg/README_md.html (英語)、 https://deveiate.org/code/pg/README_ja_md.html (日本語) * 変更履歴 :: link:/CHANGELOG.md [![https://gitter.im/ged/ruby-pg @@ -31,6 +31,10 @@ RDBMS](http://www.postgresql.org/)へのRubyのインターフェースです。 end ``` +問い合わせのメソッドについては PG::Connection クラスを、問い合わせの結果を取り回す際の情報については PG::Result +クラスを参照してください。 + + ## ビルド状況 [![Github @@ -42,28 +46,37 @@ Actionsのビルド状況](https://github.com/ged/ruby-pg/actions/workflows/sour ## 要件 * Ruby 2.7かそれより新しいバージョン -* PostgreSQL 10.xかそれ以降のバージョン(ヘッダー付属のもの、例えば-devの名前のパッケージ)。 +* PostgreSQL 10.x以降 +* ソースからgemをインストールする場合:-devのパッケージなど、ヘッダ付きのlibpq -それより前のバージョンのRubyやPostgreSQLでも通常は同様に動作しますが、定期的なテストはされていません。 +## インストール方法 -## バージョン管理 +RubyGemsを経由してインストールするには以下とします。 -[セマンティックバージョニング](http://semver.org/)の原則にしたがってgemをタグ付けしてリリースしています。 + gem install pg -この方針の結果として、2つの数字を指定する[悲観的バージョン制約](http://guides.rubygems.org/patterns/#pessimistic-version-constraint)を使ってこのgemへの依存関係を指定することができます(またそうすべきです)。 +こうするとバイナリgem、とりわけ実行しているプラットフォームに固有のものが既定でインストールされます。 -例えば次の通りです。 +### バイナリgem -```ruby - spec.add_dependency 'pg', '~> 1.0' -``` +バイナリgemは実行中のシステムのlibpqパッケージに依存しません。 +組込みでlibpqを持ちます。 -## インストール方法 +`x86_64-linux`と`aarch64-linux`のプラットフォームのgemはAlpine +Linuxで走りますが、`gcompat`パッケージが要求されます。一方、`*-linux-musl`のプラットフォームのネイティブgemはその依存関係なしに動作します。 -RubyGemsを経由してインストールするには以下とします。 +バイナリgemが対応していない用途が1つあり、それが[LDAPからの接続オプション](https://www.postgresql.org/docs/current/libpq-ldap.html)の取得です。 +これに対応するには`libldap`が必要でしょうが、沢山の依存関係があります。 +広く使われている機能のようにも対応する価値があるとも思われません。 +必要であれば、ソースgemに強制できます。 - gem install pg +### ソースgem + +ソースgemは次のように強制できます。 + + gem uninstall pg --all + gem install pg --platform ruby Postgresと一緒にインストールされた'pg_config'プログラムへのパスを指定する必要があるかもしれません。 @@ -73,6 +86,29 @@ Bundlerを介してインストールした場合は次のようにコンパイ bundle config build.pg --with-pg-config= +### Bundler + +必要なプラットフォームとソースgemがbundlerにより取得されることを確実にするためには、次のように加えられます。 + +``` +bundle lock --add-platform x86_64-linux +bundle lock --add-platform arm64-darwin +bundle lock --add-platform x64-mingw-ucrt +bundle lock --add-platform ruby +bundle package --all-platforms +``` + +`bundle package`の再実行は`bundle +update`後にも必須であり、これはすべてのプラットフォームの新しい特定のgemを取得するためです。 + +バイナリgemが何らかの理由で動作しないなら、Gemfileでソースgemの利用を簡単に強制できます。 + +``` +gem "pg", force_ruby_platform: true +``` + +### その他 + MacOS Xへインストールする詳しい情報については README-OS_X.rdoc を、Windows用のビルドやインストールの説明については README-Windows.rdoc を参照してください。 @@ -81,9 +117,22 @@ README-Windows.rdoc を参照してください。 署名されたgemとしてインストールしたい場合は、リポジトリの[`certs`ディレクトリ](https://github.com/ged/ruby-pg/tree/master/certs)にgemの署名をする公開証明書があります。 +## バージョン管理 + +[セマンティックバージョニング](http://semver.org/)の原則にしたがってgemをタグ付けしてリリースしています。 + +この方針の結果として、2つの数字を指定する[悲観的バージョン制約](http://guides.rubygems.org/patterns/#pessimistic-version-constraint)を使ってこのgemへの依存関係を指定することができます(またそうすべきです)。 + +例えば次の通りです。 + +```ruby + spec.add_dependency 'pg', '~> 1.0' +``` + + ## 型変換 -Pgでは任意でRubyと素のCコードにある結果の値やクエリ引数の型変換ができます。 +Pgでは任意でRubyと素のCコードにある結果の値や問い合わせ引数の型変換ができます。 こうすることでデータベースとのデータの往来を加速させられます。 なぜなら文字列のアロケーションが減り、(比較的遅い)Rubyのコードでの変換部分が省かれるからです。 @@ -102,10 +151,10 @@ Pgでは任意でRubyと素のCコードにある結果の値やクエリ引数 しかしPgの型変換はかなり調整が効きます。2層に分かれているのがその理由です。 -### エンコーダーとデコーダー (ext/pg_*coder.c, lib/pg/*coder.rb) +### エンコーダーとデコーダー (ext/pg_\*coder.c, lib/pg/\*coder.rb) こちらはより低層で、DBMSへ転送するためにRubyのオブジェクトを変換するエンコーディングクラスと、取得してきたデータをRubyのオブジェクトに変換し戻すデコーディングクラスが含まれています。 -クラスはそれぞれの形式によって名前空間 PG::TextEncoder, PG::TextDecoder, PG::BinaryEncoder, そして +クラスはそれぞれの形式によって名前空間 PG::TextEncoder, PG::TextDecoder, PG::BinaryEncoder, PG::BinaryDecoder に分かれています。 エンコーダーないしデコーダーオブジェクトにOIDデータ型や形式コード(テキストないしバイナリ)や任意で名前を割り当てることができます。 @@ -145,13 +194,14 @@ Binary Encoder、BD = Binary Decoder)。 [現地時間](rdoc-ref:PG::BinaryEncoder::TimestampLocal)、[UTC](rdoc-ref:PG::BinaryEncoder::TimestampUtc) * BD: [現地時間](rdoc-ref:PG::BinaryDecoder::TimestampLocal)、[UTC](rdoc-ref:PG::BinaryDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-ref:PG::BinaryDecoder::TimestampUtcToLocal) -* 日付:[TE](rdoc-ref:PG::TextEncoder::Date)、[TD](rdoc-ref:PG::TextDecoder::Date)、[BE](rdoc-ref:PG::BinaryEncoder::Date)、[BD](rdoc-ref:PG::BinaryDecoder::Date) +* Date: + [TE](rdoc-ref:PG::TextEncoder::Date)、[TD](rdoc-ref:PG::TextDecoder::Date)、[BE](rdoc-ref:PG::BinaryEncoder::Date)、[BD](rdoc-ref:PG::BinaryDecoder::Date) * JSONとJSONB: [TE](rdoc-ref:PG::TextEncoder::JSON)、[TD](rdoc-ref:PG::TextDecoder::JSON) * Inet: [TE](rdoc-ref:PG::TextEncoder::Inet)、[TD](rdoc-ref:PG::TextDecoder::Inet) * Array: - [TE](rdoc-ref:PG::TextEncoder::Array)、[TD](rdoc-ref:PG::TextDecoder::Array) + [TE](rdoc-ref:PG::TextEncoder::Array)、[TD](rdoc-ref:PG::TextDecoder::Array)、[BE](rdoc-ref:PG::BinaryEncoder::Array)、[BD](rdoc-ref:PG::BinaryDecoder::Array) * 複合型(「行」や「レコード」などとも言います):[TE](rdoc-ref:PG::TextEncoder::Record)、[TD](rdoc-ref:PG::TextDecoder::Record) カラム型として使われていませんが、以下のテキスト形式とバイナリ形式もエンコードできます。 @@ -163,14 +213,14 @@ Binary Encoder、BD = Binary Decoder)。 * SQLの識別子: [TE](rdoc-ref:PG::TextEncoder::Identifier)、[TD](rdoc-ref:PG::TextDecoder::Identifier) -### PG::TypeMap とその派生 (ext/pg_type_map*.c, lib/pg/type_map*.rb) +### TypeMap とその派生 (ext/pg_type_map\*.c, lib/pg/type_map\*.rb) -TypeMapはエンコーダーまたはデコーダーのどちらによってどの値を変換するかを定義します。 -様々な型の対応付け戦略があるので、このクラスにはいくつかの派生が実装されています。 -型変換の特有の需要に合わせてそれらの派生から選んで調整を加えることができます。 +PG::TypeMap はどのエンコーダーないしデコーダーによってどの値が変換されるかを定義します。 +様々な型の対応付けの戦略があり、このクラスの複数の派生により実装されています。 +型変換の特有の需要に合わせてそれらから選んで構成できます。 既定の型の対応付けは PG::TypeMapAllStrings です。 -型の対応付けは、結果の集合それぞれに対し、接続毎ないしクエリ毎に割り当てることができます。 +型の対応付けは、結果の集合それぞれに対し、接続毎ないし問い合わせ毎に割り当てることができます。 型の対応付けはCOPYの入出力データストリーミングでも使うことができます。 PG::Connection#copy_data を参照してください。 @@ -191,12 +241,14 @@ PG::Connection#copy_data を参照してください。 * PG::BasicTypeMapForQueries - PG::TypeMapByClass によくあるRubyの値クラス用にエンコーダーが入った状態になっています +PG::TypeMap::DefaultTypeMappable#default_type_map +を設定することで複数の型の対応付けを連鎖させられます。 ## スレッド対応 -PGには個々のスレッドが別々の PG::Connection オブジェクトを同時に使えるという点でスレッド安全性があります。 -しかし1つ以上のスレッドから同時にPgのオブジェクトにアクセスすると安全ではありません。 -そのため必ず、毎回新しいスレッドを作るときに新しいデータベースサーバー接続を開くか、スレッド安全性のある方法で接続を管理するActiveRecordのようなラッパーライブラリを使うようにしてください。 +PG には個々のスレッドないしファイバが個々の PG::Connection オブジェクトを並行に使えるという点でスレッド安全です。 +しかしながら1つ以上のスレッドないしファイバから同時に何らかの PG のオブジェクトにアクセスするのは安全ではありません。 +そのため必ず、新しいスレッドないしファイバの一つ一つに対して新しいデータベースサーバー接続を開くか、スレッド安全な方法で接続を管理するActiveRecordのようなラッパーライブラリを使ってください。 以下のようなメッセージが標準エラー出力に表示された場合、恐らく複数のスレッドが1つの接続を使っています。 @@ -215,8 +267,8 @@ Windowsでは、`Fiber.scheduler`対応はRuby-3.1以降で使えます。 同期的であったりブロックしたりするメソッド呼び出しについてもpgが内部的に非同期のlibpqインターフェースを使っているのはそれが理由です。 またlibpqの組み込み関数に代えてRubyのDNS解決を使っています。 -内部的にPgは常にlibpqのノンブロッキング接続モードを使います。 -それからブロッキングモードで走っているように振舞いますが、もし`Fiber.scheduler`が登録されていれば全てのブロッキングIOはそのスケジューラーを通じてRubyで制御されます。 +内部的に Pg は常にlibpqのノンブロッキング接続モードを使います。 +それからブロッキングモードで走っているように振舞いますが、すべてのブロッキングIOが、可能であれば登録された`Fiber.schedular`を通じて、確実にRubyで制御されます。 `PG::Connection.setnonblocking(true)`が呼ばれたらノンブロッキング状態が有効になったままになりますが、それ以降のブロッキング状態の制御が無効になるので、呼び出しているプログラムはブロッキング状態を自力で制御しなければなりません。 この規則の1つの例外には、`PG::Connection#lo_create`や外部ライブラリを使う認証メソッド(GSSAPI認証など)のような、大きめのオブジェクト用のメソッドがあります。これらは`Fiber.scheduler`と互換性がないため、ブロッキング状態は登録されたIOスケジューラに渡されません。つまり操作は適切に実行されますが、IO待ち状態に別のIOを扱うFiberから使用を切り替えてくることができなくなります。 diff --git a/Rakefile b/Rakefile index 5f2c7aea7..a1f369fcd 100644 --- a/Rakefile +++ b/Rakefile @@ -173,10 +173,12 @@ end desc "Translate readme" task :translate do - cd "translation" do - # po4a's lexer might change, so record its version for reference - sh "LANG=C po4a --version > .po4a-version" + cd "translation" do + # po4a's lexer might change, so record its version for reference + sh "LANG=C po4a --version > .po4a-version" - sh "po4a po4a.cfg" - end + pot = 'po/en.pot' + File.file?(pot) or FileUtils.touch(pot) + sh "po4a po4a.cfg" + end end diff --git a/translation/.po4a-version b/translation/.po4a-version index 710dfe7d2..a6b926614 100644 --- a/translation/.po4a-version +++ b/translation/.po4a-version @@ -1,4 +1,4 @@ -po4a version 0.68. +po4a version 0.75-alpha. Written by Martin Quinson and Denis Barbier. Copyright © 2002-2022 Software in the Public Interest, Inc. diff --git a/translation/po/all.pot b/translation/po/all.pot deleted file mode 100644 index 9a0d88328..000000000 --- a/translation/po/all.pot +++ /dev/null @@ -1,936 +0,0 @@ -# SOME DESCRIPTIVE TITLE -# Copyright (C) YEAR Pg authors -# This file is distributed under the same license as the Pg package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: Pg 1.4.6\n" -"POT-Creation-Date: 2023-05-26 21:44+0900\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. type: Title # -#: ../README.md:1 -#, markdown-text, no-wrap -msgid "pg" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:7 -#, markdown-text -msgid "home :: https://github.com/ged/ruby-pg" -msgstr "" - -#. type: Plain text -#: ../README.md:7 -#, markdown-text, no-wrap -msgid "" -"* docs :: http://deveiate.org/code/pg (English) ,\n" -" https://deveiate.org/code/pg/README_ja_md.html (Japanese)\n" -"* clog :: link:/CHANGELOG.md\n" -msgstr "" - -#. type: Plain text -#: ../README.md:9 -#, markdown-text -msgid "" -"[![Join the chat at " -"https://gitter.im/ged/ruby-pg](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ged/ruby-pg?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)" -msgstr "" - -#. type: Title ## -#: ../README.md:11 -#, markdown-text, no-wrap -msgid "Description" -msgstr "" - -#. type: Plain text -#: ../README.md:15 -#, markdown-text -msgid "" -"Pg is the Ruby interface to the [PostgreSQL " -"RDBMS](http://www.postgresql.org/). It works with [PostgreSQL 10 and " -"later](http://www.postgresql.org/support/versioning/)." -msgstr "" - -#. type: Plain text -#: ../README.md:17 -#, markdown-text -msgid "A small example usage:" -msgstr "" - -#. type: Fenced code block (ruby) -#: ../README.md:17 -#, no-wrap -msgid "" -" #!/usr/bin/env ruby\n" -"\n" -" require 'pg'\n" -"\n" -" # Output a table of current connections to the DB\n" -" conn = PG.connect( dbname: 'sales' )\n" -" conn.exec( \"SELECT * FROM pg_stat_activity\" ) do |result|\n" -" puts \" PID | User | Query\"\n" -" result.each do |row|\n" -" puts \" %7d | %-16s | %s \" %\n" -" row.values_at('pid', 'usename', 'query')\n" -" end\n" -" end\n" -msgstr "" - -#. type: Title ## -#: ../README.md:33 -#, markdown-text, no-wrap -msgid "Build Status" -msgstr "" - -#. type: Plain text -#: ../README.md:38 -#, markdown-text -msgid "" -"[![Build Status Github " -"Actions](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml) " -"[![Binary " -"gems](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml) " -"[![Build Status " -"Appveyor](https://ci.appveyor.com/api/projects/status/gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-pg-9j8l3)" -msgstr "" - -#. type: Title ## -#: ../README.md:40 -#, markdown-text, no-wrap -msgid "Requirements" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:44 -#, markdown-text -msgid "Ruby 2.7 or newer" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:44 -#, markdown-text -msgid "PostgreSQL 10.x or later (with headers, -dev packages, etc)." -msgstr "" - -#. type: Plain text -#: ../README.md:47 -#, markdown-text -msgid "" -"It usually works with earlier versions of Ruby/PostgreSQL as well, but those " -"are not regularly tested." -msgstr "" - -#. type: Title ## -#: ../README.md:49 -#, markdown-text, no-wrap -msgid "Versioning" -msgstr "" - -#. type: Plain text -#: ../README.md:52 -#, markdown-text -msgid "" -"We tag and release gems according to the [Semantic " -"Versioning](http://semver.org/) principle." -msgstr "" - -#. type: Plain text -#: ../README.md:54 -#, markdown-text -msgid "" -"As a result of this policy, you can (and should) specify a dependency on " -"this gem using the [Pessimistic Version " -"Constraint](http://guides.rubygems.org/patterns/#pessimistic-version-constraint) " -"with two digits of precision." -msgstr "" - -#. type: Plain text -#: ../README.md:56 -#, markdown-text -msgid "For example:" -msgstr "" - -#. type: Fenced code block (ruby) -#: ../README.md:57 -#, no-wrap -msgid " spec.add_dependency 'pg', '~> 1.0'\n" -msgstr "" - -#. type: Title ## -#: ../README.md:61 -#, markdown-text, no-wrap -msgid "How To Install" -msgstr "" - -#. type: Plain text -#: ../README.md:64 -#, markdown-text -msgid "Install via RubyGems:" -msgstr "" - -#. type: Plain text -#: ../README.md:66 -#, markdown-text, no-wrap -msgid " gem install pg\n" -msgstr "" - -#. type: Plain text -#: ../README.md:69 -#, markdown-text -msgid "" -"You may need to specify the path to the 'pg_config' program installed with " -"Postgres:" -msgstr "" - -#. type: Plain text -#: ../README.md:71 -#, markdown-text, no-wrap -msgid " gem install pg -- --with-pg-config=\n" -msgstr "" - -#. type: Plain text -#: ../README.md:73 -#, markdown-text -msgid "If you're installing via Bundler, you can provide compile hints like so:" -msgstr "" - -#. type: Plain text -#: ../README.md:75 -#, markdown-text, no-wrap -msgid " bundle config build.pg --with-pg-config=\n" -msgstr "" - -#. type: Plain text -#: ../README.md:78 -#, markdown-text -msgid "" -"See README-OS_X.rdoc for more information about installing under MacOS X, " -"and README-Windows.rdoc for Windows build/installation instructions." -msgstr "" - -#. type: Plain text -#: ../README.md:82 -#, markdown-text -msgid "" -"There's also [a Google+ group](http://goo.gl/TFy1U) and a [mailing " -"list](http://groups.google.com/group/ruby-pg) if you get stuck, or just want " -"to chat about something." -msgstr "" - -#. type: Plain text -#: ../README.md:86 -#, markdown-text -msgid "" -"If you want to install as a signed gem, the public certs of the gem signers " -"can be found in [the `certs` " -"directory](https://github.com/ged/ruby-pg/tree/master/certs) of the " -"repository." -msgstr "" - -#. type: Title ## -#: ../README.md:88 -#, markdown-text, no-wrap -msgid "Type Casts" -msgstr "" - -#. type: Plain text -#: ../README.md:94 -#, markdown-text -msgid "" -"Pg can optionally type cast result values and query parameters in Ruby or " -"native C code. This can speed up data transfers to and from the database, " -"because String allocations are reduced and conversions in (slower) Ruby code " -"can be omitted." -msgstr "" - -#. type: Plain text -#: ../README.md:96 -#, markdown-text -msgid "Very basic type casting can be enabled by:" -msgstr "" - -#. type: Fenced code block (ruby) -#: ../README.md:96 -#, no-wrap -msgid "" -" conn.type_map_for_results = PG::BasicTypeMapForResults.new conn\n" -" # ... this works for result value mapping:\n" -" conn.exec(\"select 1, now(), '{2,3}'::int[]\").values\n" -" # => [[1, 2014-09-21 20:51:56 +0200, [2, 3]]]\n" -"\n" -" conn.type_map_for_queries = PG::BasicTypeMapForQueries.new conn\n" -" # ... and this for param value mapping:\n" -" conn.exec_params(\"SELECT $1::text, $2::text, $3::text\", [1, 1.23, " -"[2,3]]).values\n" -" # => [[\"1\", \"1.2300000000000000E+00\", \"{2,3}\"]]\n" -msgstr "" - -#. type: Plain text -#: ../README.md:110 -#, markdown-text -msgid "" -"But Pg's type casting is highly customizable. That's why it's divided into 2 " -"layers:" -msgstr "" - -#. type: Title ### -#: ../README.md:111 -#, markdown-text, no-wrap -msgid "Encoders / Decoders (ext/pg_*coder.c, lib/pg/*coder.rb)" -msgstr "" - -#. type: Plain text -#: ../README.md:118 -#, markdown-text -msgid "" -"This is the lower layer, containing encoding classes that convert Ruby " -"objects for transmission to the DBMS and decoding classes to convert " -"received data back to Ruby objects. The classes are namespaced according to " -"their format and direction in PG::TextEncoder, PG::TextDecoder, " -"PG::BinaryEncoder and PG::BinaryDecoder." -msgstr "" - -#. type: Plain text -#: ../README.md:124 -#, markdown-text -msgid "" -"It is possible to assign a type OID, format code (text or binary) and " -"optionally a name to an encoder or decoder object. It's also possible to " -"build composite types by assigning an element encoder/decoder. PG::Coder " -"objects can be used to set up a PG::TypeMap or alternatively to convert " -"single values to/from their string representation." -msgstr "" - -#. type: Plain text -#: ../README.md:126 -#, markdown-text -msgid "" -"The following PostgreSQL column types are supported by ruby-pg (TE = Text " -"Encoder, TD = Text Decoder, BE = Binary Encoder, BD = Binary Decoder):" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Integer: [TE](rdoc-ref:PG::TextEncoder::Integer), " -"[TD](rdoc-ref:PG::TextDecoder::Integer), " -"[BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 No links? Switch to " -"[here](https://deveiate.org/code/pg/README_md.html#label-Type+Casts) 💡" -msgstr "" - -#. type: Bullet: ' * ' -#: ../README.md:146 -#, markdown-text -msgid "" -"BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2), " -"[Int4](rdoc-ref:PG::BinaryEncoder::Int4), " -"[Int8](rdoc-ref:PG::BinaryEncoder::Int8)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Float: [TE](rdoc-ref:PG::TextEncoder::Float), " -"[TD](rdoc-ref:PG::TextDecoder::Float), " -"[BD](rdoc-ref:PG::BinaryDecoder::Float)" -msgstr "" - -#. type: Bullet: ' * ' -#: ../README.md:146 -#, markdown-text -msgid "" -"BE: [Float4](rdoc-ref:PG::BinaryEncoder::Float4), " -"[Float8](rdoc-ref:PG::BinaryEncoder::Float8)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric), " -"[TD](rdoc-ref:PG::TextDecoder::Numeric)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean), " -"[TD](rdoc-ref:PG::TextDecoder::Boolean), " -"[BE](rdoc-ref:PG::BinaryEncoder::Boolean), " -"[BD](rdoc-ref:PG::BinaryDecoder::Boolean)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"String: [TE](rdoc-ref:PG::TextEncoder::String), " -"[TD](rdoc-ref:PG::TextDecoder::String), " -"[BE](rdoc-ref:PG::BinaryEncoder::String), " -"[BD](rdoc-ref:PG::BinaryDecoder::String)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea), " -"[TD](rdoc-ref:PG::TextDecoder::Bytea), " -"[BE](rdoc-ref:PG::BinaryEncoder::Bytea), " -"[BD](rdoc-ref:PG::BinaryDecoder::Bytea)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64), " -"[TD](rdoc-ref:PG::TextDecoder::FromBase64), " -"[BE](rdoc-ref:PG::BinaryEncoder::FromBase64), " -"[BD](rdoc-ref:PG::BinaryDecoder::ToBase64)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "Timestamp:" -msgstr "" - -#. type: Bullet: ' * ' -#: ../README.md:146 -#, markdown-text -msgid "" -"TE: [local](rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone), " -"[UTC](rdoc-ref:PG::TextEncoder::TimestampUtc), " -"[with-TZ](rdoc-ref:PG::TextEncoder::TimestampWithTimeZone)" -msgstr "" - -#. type: Bullet: ' * ' -#: ../README.md:146 -#, markdown-text -msgid "" -"TD: [local](rdoc-ref:PG::TextDecoder::TimestampLocal), " -"[UTC](rdoc-ref:PG::TextDecoder::TimestampUtc), " -"[UTC-to-local](rdoc-ref:PG::TextDecoder::TimestampUtcToLocal)" -msgstr "" - -#. type: Bullet: ' * ' -#: ../README.md:146 -#, markdown-text -msgid "" -"BE: [local](rdoc-ref:PG::BinaryEncoder::TimestampLocal), " -"[UTC](rdoc-ref:PG::BinaryEncoder::TimestampUtc)" -msgstr "" - -#. type: Bullet: ' * ' -#: ../README.md:146 -#, markdown-text -msgid "" -"BD: [local](rdoc-ref:PG::BinaryDecoder::TimestampLocal), " -"[UTC](rdoc-ref:PG::BinaryDecoder::TimestampUtc), " -"[UTC-to-local](rdoc-ref:PG::BinaryDecoder::TimestampUtcToLocal)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Date: [TE](rdoc-ref:PG::TextEncoder::Date), " -"[TD](rdoc-ref:PG::TextDecoder::Date), " -"[BE](rdoc-ref:PG::BinaryEncoder::Date), " -"[BD](rdoc-ref:PG::BinaryDecoder::Date)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"JSON and JSONB: [TE](rdoc-ref:PG::TextEncoder::JSON), " -"[TD](rdoc-ref:PG::TextDecoder::JSON)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Inet: [TE](rdoc-ref:PG::TextEncoder::Inet), " -"[TD](rdoc-ref:PG::TextDecoder::Inet)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Array: [TE](rdoc-ref:PG::TextEncoder::Array), " -"[TD](rdoc-ref:PG::TextDecoder::Array)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:146 -#, markdown-text -msgid "" -"Composite Type (also called \"Row\" or \"Record\"): " -"[TE](rdoc-ref:PG::TextEncoder::Record), " -"[TD](rdoc-ref:PG::TextDecoder::Record)" -msgstr "" - -#. type: Plain text -#: ../README.md:148 -#, markdown-text -msgid "" -"The following text and binary formats can also be encoded although they are " -"not used as column type:" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:152 -#, markdown-text -msgid "" -"COPY input and output data: [TE](rdoc-ref:PG::TextEncoder::CopyRow), " -"[TD](rdoc-ref:PG::TextDecoder::CopyRow), " -"[BE](rdoc-ref:PG::BinaryEncoder::CopyRow), " -"[BD](rdoc-ref:PG::BinaryDecoder::CopyRow)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:152 -#, markdown-text -msgid "" -"Literal for insertion into SQL string: " -"[TE](rdoc-ref:PG::TextEncoder::QuotedLiteral)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:152 -#, markdown-text -msgid "" -"SQL-Identifier: [TE](rdoc-ref:PG::TextEncoder::Identifier), " -"[TD](rdoc-ref:PG::TextDecoder::Identifier)" -msgstr "" - -#. type: Title ### -#: ../README.md:153 -#, markdown-text, no-wrap -msgid "PG::TypeMap and derivations (ext/pg_type_map*.c, lib/pg/type_map*.rb)" -msgstr "" - -#. type: Plain text -#: ../README.md:159 -#, markdown-text -msgid "" -"A TypeMap defines which value will be converted by which encoder/decoder. " -"There are different type map strategies, implemented by several derivations " -"of this class. They can be chosen and configured according to the particular " -"needs for type casting. The default type map is PG::TypeMapAllStrings." -msgstr "" - -#. type: Plain text -#: ../README.md:163 -#, markdown-text -msgid "" -"A type map can be assigned per connection or per query respectively per " -"result set. Type maps can also be used for COPY in and out data streaming. " -"See PG::Connection#copy_data ." -msgstr "" - -#. type: Plain text -#: ../README.md:165 -#, markdown-text -msgid "The following base type maps are available:" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:171 -#, markdown-text -msgid "" -"PG::TypeMapAllStrings - encodes and decodes all values to and from strings " -"(default)" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:171 -#, markdown-text -msgid "" -"PG::TypeMapByClass - selects encoder based on the class of the value to be " -"sent" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:171 -#, markdown-text -msgid "PG::TypeMapByColumn - selects encoder and decoder by column order" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:171 -#, markdown-text -msgid "PG::TypeMapByOid - selects decoder by PostgreSQL type OID" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:171 -#, markdown-text -msgid "PG::TypeMapInRuby - define a custom type map in ruby" -msgstr "" - -#. type: Plain text -#: ../README.md:173 -#, markdown-text -msgid "" -"The following type maps are prefilled with type mappings from the " -"PG::BasicTypeRegistry :" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:177 -#, markdown-text -msgid "" -"PG::BasicTypeMapForResults - a PG::TypeMapByOid prefilled with decoders for " -"common PostgreSQL column types" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:177 -#, markdown-text -msgid "" -"PG::BasicTypeMapBasedOnResult - a PG::TypeMapByOid prefilled with encoders " -"for common PostgreSQL column types" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:177 -#, markdown-text -msgid "" -"PG::BasicTypeMapForQueries - a PG::TypeMapByClass prefilled with encoders " -"for common Ruby value classes" -msgstr "" - -#. type: Title ## -#: ../README.md:179 -#, markdown-text, no-wrap -msgid "Thread support" -msgstr "" - -#. type: Plain text -#: ../README.md:184 -#, markdown-text -msgid "" -"PG is thread safe in such a way that different threads can use different " -"PG::Connection objects concurrently. However it is not safe to access any " -"Pg objects simultaneously from more than one thread. So make sure to open a " -"new database server connection for every new thread or use a wrapper library " -"like ActiveRecord that manages connections in a thread safe way." -msgstr "" - -#. type: Plain text -#: ../README.md:186 -#, markdown-text -msgid "" -"If messages like the following are printed to stderr, you're probably using " -"one connection from several threads:" -msgstr "" - -#. type: Plain text -#: ../README.md:192 -#, markdown-text, no-wrap -msgid "" -" message type 0x31 arrived from server while idle\n" -" message type 0x32 arrived from server while idle\n" -" message type 0x54 arrived from server while idle\n" -" message type 0x43 arrived from server while idle\n" -" message type 0x5a arrived from server while idle\n" -msgstr "" - -#. type: Title ## -#: ../README.md:194 -#, markdown-text, no-wrap -msgid "Fiber IO scheduler support" -msgstr "" - -#. type: Plain text -#: ../README.md:201 -#, markdown-text -msgid "" -"Pg is fully compatible with `Fiber.scheduler` introduced in Ruby-3.0 since " -"pg-1.3.0. On Windows support for `Fiber.scheduler` is available on Ruby-3.1 " -"or newer. All possibly blocking IO operations are routed through the " -"`Fiber.scheduler` if one is registered for the running thread. That is why " -"pg internally uses the asynchronous libpq interface even for " -"synchronous/blocking method calls. It also uses Ruby's DNS resolution " -"instead of libpq's builtin functions." -msgstr "" - -#. type: Plain text -#: ../README.md:205 -#, markdown-text -msgid "" -"Internally Pg always uses the nonblocking connection mode of libpq. It then " -"behaves like running in blocking mode but ensures, that all blocking IO is " -"handled in Ruby through a possibly registered `Fiber.scheduler`. When " -"`PG::Connection.setnonblocking(true)` is called then the nonblocking state " -"stays enabled, but the additional handling of blocking states is disabled, " -"so that the calling program has to handle blocking states on its own." -msgstr "" - -#. type: Plain text -#: ../README.md:209 -#, markdown-text -msgid "" -"An exception to this rule are the methods for large objects like " -"`PG::Connection#lo_create` and authentication methods using external " -"libraries (like GSSAPI authentication). They are not compatible with " -"`Fiber.scheduler`, so that blocking states are not passed to the registered " -"IO scheduler. That means the operation will work properly, but IO waiting " -"states can not be used to switch to another Fiber doing IO." -msgstr "" - -#. type: Title ## -#: ../README.md:211 -#, markdown-text, no-wrap -msgid "Ractor support" -msgstr "" - -#. type: Plain text -#: ../README.md:217 -#, markdown-text -msgid "" -"Pg is fully compatible with Ractor introduced in Ruby-3.0 since pg-1.5.0. " -"All type en/decoders and type maps are shareable between ractors if they are " -"made frozen by `Ractor.make_shareable`. Also frozen PG::Result and " -"PG::Tuple objects can be shared. All frozen objects (except PG::Connection) " -"can still be used to do communication with the PostgreSQL server or to read " -"retrieved data." -msgstr "" - -#. type: Plain text -#: ../README.md:219 -#, markdown-text -msgid "" -"PG::Connection is not shareable and must be created within each Ractor to " -"establish a dedicated connection." -msgstr "" - -#. type: Title ## -#: ../README.md:221 -#, markdown-text, no-wrap -msgid "Contributing" -msgstr "" - -#. type: Plain text -#: ../README.md:225 -#, markdown-text -msgid "" -"To report bugs, suggest features, or check out the source with Git, [check " -"out the project page](https://github.com/ged/ruby-pg)." -msgstr "" - -#. type: Plain text -#: ../README.md:227 -#, markdown-text -msgid "After checking out the source, install all dependencies:" -msgstr "" - -#. type: Plain text -#: ../README.md:229 -#, markdown-text, no-wrap -msgid " $ bundle install\n" -msgstr "" - -#. type: Plain text -#: ../README.md:232 -#, markdown-text -msgid "" -"Cleanup extension files, packaging files, test databases. Run this to " -"change between PostgreSQL versions:" -msgstr "" - -#. type: Plain text -#: ../README.md:234 -#, markdown-text, no-wrap -msgid " $ rake clean\n" -msgstr "" - -#. type: Plain text -#: ../README.md:236 -#, markdown-text -msgid "Compile extension:" -msgstr "" - -#. type: Plain text -#: ../README.md:238 -#, markdown-text, no-wrap -msgid " $ rake compile\n" -msgstr "" - -#. type: Plain text -#: ../README.md:240 -#, markdown-text -msgid "" -"Run tests/specs on the PostgreSQL version that `pg_config --bindir` points " -"to:" -msgstr "" - -#. type: Plain text -#: ../README.md:242 -#, markdown-text, no-wrap -msgid " $ rake test\n" -msgstr "" - -#. type: Plain text -#: ../README.md:244 -#, markdown-text -msgid "" -"Or run a specific test per file and line number on a specific PostgreSQL " -"version:" -msgstr "" - -#. type: Plain text -#: ../README.md:246 -#, markdown-text, no-wrap -msgid "" -" $ PATH=/usr/lib/postgresql/14/bin:$PATH rspec -Ilib -fd " -"spec/pg/connection_spec.rb:455\n" -msgstr "" - -#. type: Plain text -#: ../README.md:248 -#, markdown-text -msgid "Generate the API documentation:" -msgstr "" - -#. type: Plain text -#: ../README.md:250 -#, markdown-text, no-wrap -msgid " $ rake docs\n" -msgstr "" - -#. type: Plain text -#: ../README.md:252 -#, markdown-text -msgid "Make sure, that all bugs and new features are verified by tests." -msgstr "" - -#. type: Plain text -#: ../README.md:255 -#, markdown-text -msgid "" -"The current maintainers are Michael Granger and Lars " -"Kanis ." -msgstr "" - -#. type: Title ## -#: ../README.md:257 -#, markdown-text, no-wrap -msgid "Copying" -msgstr "" - -#. type: Plain text -#: ../README.md:260 -#, markdown-text -msgid "Copyright (c) 1997-2022 by the authors." -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Jeff Davis " -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Guy Decoux (ts) " -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Michael Granger " -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Lars Kanis " -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Dave Lee" -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Eiji Matsumoto " -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Yukihiro Matsumoto " -msgstr "" - -#. type: Bullet: '* ' -#: ../README.md:269 -#, markdown-text -msgid "Noboru Saitou " -msgstr "" - -#. type: Plain text -#: ../README.md:273 -#, markdown-text -msgid "" -"You may redistribute this software under the same terms as Ruby itself; see " -"https://www.ruby-lang.org/en/about/license.txt or the BSDL file in the " -"source for details." -msgstr "" - -#. type: Plain text -#: ../README.md:276 -#, markdown-text -msgid "" -"Portions of the code are from the PostgreSQL project, and are distributed " -"under the terms of the PostgreSQL license, included in the file POSTGRES." -msgstr "" - -#. type: Plain text -#: ../README.md:278 -#, markdown-text -msgid "Portions copyright LAIKA, Inc." -msgstr "" - -#. type: Title ## -#: ../README.md:280 -#, markdown-text, no-wrap -msgid "Acknowledgments" -msgstr "" - -#. type: Plain text -#: ../README.md:284 -#, markdown-text -msgid "" -"See Contributors.rdoc for the many additional fine people that have " -"contributed to this library over the years." -msgstr "" - -#. type: Plain text -#: ../README.md:286 -#, markdown-text -msgid "" -"We are thankful to the people at the ruby-list and ruby-dev mailing lists. " -"And to the people who developed PostgreSQL." -msgstr "" diff --git a/translation/po/ja.po b/translation/po/ja.po index c4b0d51aa..5e4374ebe 100644 --- a/translation/po/ja.po +++ b/translation/po/ja.po @@ -1,5 +1,5 @@ # Pgの日本語訳 -# Copyright (C) 2023 gemmaro. +# Copyright (C) 2023, 2026 gemmaro. # # 翻訳に関しての注意点は以下です。 # @@ -10,11 +10,14 @@ # # encoder -> エンコーダー # decoder -> デコーダー +# query -> 問い合わせ[1] +# +# [1] https://www.postgresql.jp/document/18/html/queries-overview.html msgid "" msgstr "" "Project-Id-Version: Pg 1.4.5\n" -"POT-Creation-Date: 2023-05-26 21:44+0900\n" -"PO-Revision-Date: 2023-05-26 22:39+0900\n" +"POT-Creation-Date: 2026-06-23 14:39+0900\n" +"PO-Revision-Date: 2026-06-23 15:26+0900\n" "Last-Translator: gemmaro \n" "Language-Team: none\n" "Language: ja\n" @@ -37,11 +40,11 @@ msgstr "ホーム :: https://github.com/ged/ruby-pg" #: ../README.md:7 #, no-wrap msgid "" -"* docs :: http://deveiate.org/code/pg (English) ,\n" +"* docs :: http://deveiate.org/code/pg/README_md.html (English) ,\n" " https://deveiate.org/code/pg/README_ja_md.html (Japanese)\n" "* clog :: link:/CHANGELOG.md\n" msgstr "" -"* ドキュメント :: http://deveiate.org/code/pg (英語)、 https://deveiate.org/code/pg/README_ja_md.html (日本語)\n" +"* ドキュメント :: http://deveiate.org/code/pg/README_md.html (英語)、 https://deveiate.org/code/pg/README_ja_md.html (日本語)\n" "* 変更履歴 :: link:/CHANGELOG.md\n" #. type: Plain text @@ -64,9 +67,9 @@ msgstr "説明" #. type: Plain text #: ../README.md:15 msgid "" -"Pg is the Ruby interface to the [PostgreSQL RDBMS](http://www.postgresql." -"org/). It works with [PostgreSQL 10 and later](http://www.postgresql.org/" -"support/versioning/)." +"Pg is the Ruby interface to the [PostgreSQL RDBMS](http://" +"www.postgresql.org/). It works with [PostgreSQL 10 and later](http://" +"www.postgresql.org/support/versioning/)." msgstr "" "Pgは[PostgreSQL RDBMS](http://www.postgresql.org/)へのRubyのインターフェース" "です。[PostgreSQL 10以降](http://www.postgresql.org/support/versioning/)で動" @@ -109,116 +112,144 @@ msgstr "" " end\n" " end\n" +#. type: Plain text +#: ../README.md:34 +msgid "" +"See the PG::Connection class for query methods and the PG::Result class for " +"information on working with the results of a query." +msgstr "問い合わせのメソッドについては PG::Connection クラスを、問い合わせの結果を取り回す際の情報については PG::Result クラスを参照してください。" + #. type: Title ## -#: ../README.md:33 +#: ../README.md:36 #, no-wrap msgid "Build Status" msgstr "ビルド状況" #. type: Plain text -#: ../README.md:38 +#: ../README.md:41 msgid "" "[![Build Status Github Actions](https://github.com/ged/ruby-pg/actions/" "workflows/source-gem.yml/badge.svg?branch=master)](https://github.com/ged/" -"ruby-pg/actions/workflows/source-gem.yml) [![Binary gems](https://github." -"com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?branch=master)]" -"(https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml) [![Build " -"Status Appveyor](https://ci.appveyor.com/api/projects/status/" -"gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-" +"ruby-pg/actions/workflows/source-gem.yml) [![Binary gems](https://" +"github.com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?" +"branch=master)](https://github.com/ged/ruby-pg/actions/workflows/binary-" +"gems.yml) [![Build Status Appveyor](https://ci.appveyor.com/api/projects/" +"status/gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-" "pg-9j8l3)" msgstr "" "[![Github Actionsのビルド状況](https://github.com/ged/ruby-pg/actions/" "workflows/source-gem.yml/badge.svg?branch=master)](https://github.com/ged/" -"ruby-pg/actions/workflows/source-gem.yml) [![バイナリgem](https://github." -"com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?branch=master)]" -"(https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml) [!" -"[Appveyorのビルド状況](https://ci.appveyor.com/api/projects/status/" -"gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-" +"ruby-pg/actions/workflows/source-gem.yml) [![バイナリgem](https://" +"github.com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?" +"branch=master)](https://github.com/ged/ruby-pg/actions/workflows/binary-" +"gems.yml) [![Appveyorのビルド状況](https://ci.appveyor.com/api/projects/" +"status/gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-" "pg-9j8l3)" #. type: Title ## -#: ../README.md:40 +#: ../README.md:43 #, no-wrap msgid "Requirements" msgstr "要件" #. type: Bullet: '* ' -#: ../README.md:44 +#: ../README.md:48 msgid "Ruby 2.7 or newer" msgstr "Ruby 2.7かそれより新しいバージョン" #. type: Bullet: '* ' -#: ../README.md:44 -msgid "PostgreSQL 10.x or later (with headers, -dev packages, etc)." -msgstr "" -"PostgreSQL 10.xかそれ以降のバージョン(ヘッダー付属のもの、例えば-devの名前" -"のパッケージ)。" +#: ../README.md:48 +msgid "PostgreSQL 10.x or later" +msgstr "PostgreSQL 10.x以降" -#. type: Plain text -#: ../README.md:47 -msgid "" -"It usually works with earlier versions of Ruby/PostgreSQL as well, but those " -"are not regularly tested." -msgstr "" -"それより前のバージョンのRubyやPostgreSQLでも通常は同様に動作しますが、定期的" -"なテストはされていません。" +#. type: Bullet: '* ' +#: ../README.md:48 +msgid "When installing the source gem: libpq with headers, -dev packages, etc." +msgstr "ソースからgemをインストールする場合:-devのパッケージなど、ヘッダ付きのlibpq" #. type: Title ## -#: ../README.md:49 +#: ../README.md:50 #, no-wrap -msgid "Versioning" -msgstr "バージョン管理" +msgid "How To Install" +msgstr "インストール方法" + +#. type: Plain text +#: ../README.md:53 +msgid "Install via RubyGems:" +msgstr "RubyGemsを経由してインストールするには以下とします。" + +#. type: Plain text +#: ../README.md:55 +#, no-wrap +msgid " gem install pg\n" +msgstr " gem install pg\n" #. type: Plain text -#: ../README.md:52 +#: ../README.md:57 msgid "" -"We tag and release gems according to the [Semantic Versioning](http://semver." -"org/) principle." -msgstr "" -"[セマンティックバージョニング](http://semver.org/)の原則にしたがってgemをタグ" -"付けしてリリースしています。" +"This installs the binary gem, specific to the running platform by default." +msgstr "こうするとバイナリgem、とりわけ実行しているプラットフォームに固有のものが既定でインストールされます。" + +#. type: Title ### +#: ../README.md:58 +#, no-wrap +msgid "Binary gem" +msgstr "バイナリgem" #. type: Plain text -#: ../README.md:54 +#: ../README.md:62 msgid "" -"As a result of this policy, you can (and should) specify a dependency on " -"this gem using the [Pessimistic Version Constraint](http://guides.rubygems." -"org/patterns/#pessimistic-version-constraint) with two digits of precision." +"The binary gems don't depend on the libpq package on the running system. " +"They have libpq builtin." msgstr "" -"この方針の結果として、2つの数字を指定する[悲観的バージョン制約](http://" -"guides.rubygems.org/patterns/#pessimistic-version-constraint)を使ってこのgem" -"への依存関係を指定することができます(またそうすべきです)。" +"バイナリgemは実行中のシステムのlibpqパッケージに依存しません。\n" +"組込みでlibpqを持ちます。" #. type: Plain text -#: ../README.md:56 -msgid "For example:" -msgstr "例えば次の通りです。" +#: ../README.md:64 +msgid "" +"The gems for platform `x86_64-linux` and `aarch64-linux` run on Alpine " +"Linux, but require the package `gcompat`, while the native gems for platform " +"`*-linux-musl` work without that dependency." +msgstr "`x86_64-linux`と`aarch64-linux`のプラットフォームのgemはAlpine Linuxで走りますが、`gcompat`パッケージが要求されます。一方、`*-linux-musl`のプラットフォームのネイティブgemはその依存関係なしに動作します。" -#. type: Fenced code block (ruby) -#: ../README.md:57 -#, no-wrap -msgid " spec.add_dependency 'pg', '~> 1.0'\n" -msgstr " spec.add_dependency 'pg', '~> 1.0'\n" +#. type: Plain text +#: ../README.md:66 +msgid "" +"There is one use case the binary gems don't support: Retrieval of connection " +"[options from LDAP](https://www.postgresql.org/docs/current/libpq-" +"ldap.html). To support this `libldap` would be necessary, but it has a lot " +"of dependencies. It doesn't seem to be a widely used feature and that it's " +"worth to support it. If it's necessary, the source gem can be forced." +msgstr "" +"バイナリgemが対応していない用途が1つあり、それが[LDAPからの接続オプション](https://www.postgresql.org/docs/current/libpq-ldap.html)の取得です。\n" +"これに対応するには`libldap`が必要でしょうが、沢山の依存関係があります。\n" +"広く使われている機能のようにも対応する価値があるとも思われません。\n" +"必要であれば、ソースgemに強制できます。" -#. type: Title ## -#: ../README.md:61 +#. type: Title ### +#: ../README.md:67 #, no-wrap -msgid "How To Install" -msgstr "インストール方法" +msgid "Source gem" +msgstr "ソースgem" #. type: Plain text -#: ../README.md:64 -msgid "Install via RubyGems:" -msgstr "RubyGemsを経由してインストールするには以下とします。" +#: ../README.md:70 +msgid "The source gem can be forced by:" +msgstr "ソースgemは次のように強制できます。" #. type: Plain text -#: ../README.md:66 +#: ../README.md:73 #, no-wrap -msgid " gem install pg\n" -msgstr " gem install pg\n" +msgid "" +" gem uninstall pg --all\n" +" gem install pg --platform ruby\n" +msgstr "" +" gem uninstall pg --all\n" +" gem install pg --platform ruby\n" #. type: Plain text -#: ../README.md:69 +#: ../README.md:76 msgid "" "You may need to specify the path to the 'pg_config' program installed with " "Postgres:" @@ -227,13 +258,13 @@ msgstr "" "があるかもしれません。" #. type: Plain text -#: ../README.md:71 +#: ../README.md:78 #, no-wrap msgid " gem install pg -- --with-pg-config=\n" msgstr " gem install pg -- --with-pg-config=\n" #. type: Plain text -#: ../README.md:73 +#: ../README.md:80 msgid "" "If you're installing via Bundler, you can provide compile hints like so:" msgstr "" @@ -241,13 +272,68 @@ msgstr "" "られます。" #. type: Plain text -#: ../README.md:75 +#: ../README.md:82 #, no-wrap msgid " bundle config build.pg --with-pg-config=\n" msgstr " bundle config build.pg --with-pg-config=\n" +#. type: Title ### +#: ../README.md:83 +#, no-wrap +msgid "Bundler" +msgstr "Bundler" + #. type: Plain text -#: ../README.md:78 +#: ../README.md:86 +msgid "" +"To make sure, the necessary platforms and the source gem are fetched by " +"bundler, they can be added like so" +msgstr "必要なプラットフォームとソースgemがbundlerにより取得されることを確実にするためには、次のように加えられます。" + +#. type: Fenced code block +#: ../README.md:87 +#, no-wrap +msgid "" +"bundle lock --add-platform x86_64-linux\n" +"bundle lock --add-platform arm64-darwin\n" +"bundle lock --add-platform x64-mingw-ucrt\n" +"bundle lock --add-platform ruby\n" +"bundle package --all-platforms\n" +msgstr "" +"bundle lock --add-platform x86_64-linux\n" +"bundle lock --add-platform arm64-darwin\n" +"bundle lock --add-platform x64-mingw-ucrt\n" +"bundle lock --add-platform ruby\n" +"bundle package --all-platforms\n" + +#. type: Plain text +#: ../README.md:96 +msgid "" +"A re-run of `bundle package` is also necessary after `bundle update`, in " +"order to retrieve the new specific gems of all platforms." +msgstr "`bundle package`の再実行は`bundle update`後にも必須であり、これはすべてのプラットフォームの新しい特定のgemを取得するためです。" + +#. type: Plain text +#: ../README.md:98 +msgid "" +"If the binary gems don't work for some reason, it's easy to force the usage " +"of the source gem in the Gemfile:" +msgstr "バイナリgemが何らかの理由で動作しないなら、Gemfileでソースgemの利用を簡単に強制できます。" + +#. type: Fenced code block +#: ../README.md:99 +#, no-wrap +msgid "gem \"pg\", force_ruby_platform: true\n" +msgstr "gem \"pg\", force_ruby_platform: true\n" + +#. type: Title ### +#: ../README.md:103 +#, no-wrap +msgid "More" +msgstr "その他" + +#. type: Plain text +#: ../README.md:107 msgid "" "See README-OS_X.rdoc for more information about installing under MacOS X, " "and README-Windows.rdoc for Windows build/installation instructions." @@ -257,7 +343,7 @@ msgstr "" "い。" #. type: Plain text -#: ../README.md:82 +#: ../README.md:111 msgid "" "There's also [a Google+ group](http://goo.gl/TFy1U) and a [mailing list]" "(http://groups.google.com/group/ruby-pg) if you get stuck, or just want to " @@ -268,7 +354,7 @@ msgstr "" "す。" #. type: Plain text -#: ../README.md:86 +#: ../README.md:115 msgid "" "If you want to install as a signed gem, the public certs of the gem signers " "can be found in [the `certs` directory](https://github.com/ged/ruby-pg/tree/" @@ -279,30 +365,68 @@ msgstr "" "明書があります。" #. type: Title ## -#: ../README.md:88 +#: ../README.md:117 +#, no-wrap +msgid "Versioning" +msgstr "バージョン管理" + +#. type: Plain text +#: ../README.md:120 +msgid "" +"We tag and release gems according to the [Semantic Versioning](http://" +"semver.org/) principle." +msgstr "" +"[セマンティックバージョニング](http://semver.org/)の原則にしたがってgemをタグ" +"付けしてリリースしています。" + +#. type: Plain text +#: ../README.md:122 +msgid "" +"As a result of this policy, you can (and should) specify a dependency on " +"this gem using the [Pessimistic Version Constraint](http://" +"guides.rubygems.org/patterns/#pessimistic-version-constraint) with two " +"digits of precision." +msgstr "" +"この方針の結果として、2つの数字を指定する[悲観的バージョン制約](http://" +"guides.rubygems.org/patterns/#pessimistic-version-constraint)を使ってこのgem" +"への依存関係を指定することができます(またそうすべきです)。" + +#. type: Plain text +#: ../README.md:124 +msgid "For example:" +msgstr "例えば次の通りです。" + +#. type: Fenced code block (ruby) +#: ../README.md:125 +#, no-wrap +msgid " spec.add_dependency 'pg', '~> 1.0'\n" +msgstr " spec.add_dependency 'pg', '~> 1.0'\n" + +#. type: Title ## +#: ../README.md:130 #, no-wrap msgid "Type Casts" msgstr "型変換" #. type: Plain text -#: ../README.md:94 +#: ../README.md:136 msgid "" "Pg can optionally type cast result values and query parameters in Ruby or " "native C code. This can speed up data transfers to and from the database, " "because String allocations are reduced and conversions in (slower) Ruby code " "can be omitted." msgstr "" -"Pgでは任意でRubyと素のCコードにある結果の値やクエリ引数の型変換ができます。\n" +"Pgでは任意でRubyと素のCコードにある結果の値や問い合わせ引数の型変換ができます。\n" "こうすることでデータベースとのデータの往来を加速させられます。\n" "なぜなら文字列のアロケーションが減り、(比較的遅い)Rubyのコードでの変換部分が省かれるからです。" #. type: Plain text -#: ../README.md:96 +#: ../README.md:138 msgid "Very basic type casting can be enabled by:" msgstr "とても基本的な型変換は次のようにできます。" #. type: Fenced code block (ruby) -#: ../README.md:96 +#: ../README.md:138 #, no-wrap msgid "" " conn.type_map_for_results = PG::BasicTypeMapForResults.new conn\n" @@ -326,7 +450,7 @@ msgstr "" " # => [[\"1\", \"1.2300000000000000E+00\", \"{2,3}\"]]\n" #. type: Plain text -#: ../README.md:110 +#: ../README.md:152 msgid "" "But Pg's type casting is highly customizable. That's why it's divided into 2 " "layers:" @@ -334,22 +458,22 @@ msgstr "" "しかしPgの型変換はかなり調整が効きます。2層に分かれているのがその理由です。" #. type: Title ### -#: ../README.md:111 +#: ../README.md:153 #, no-wrap -msgid "Encoders / Decoders (ext/pg_*coder.c, lib/pg/*coder.rb)" -msgstr "エンコーダーとデコーダー (ext/pg_*coder.c, lib/pg/*coder.rb)" +msgid "Encoders / Decoders (ext/pg_\\*coder.c, lib/pg/\\*coder.rb)" +msgstr "エンコーダーとデコーダー (ext/pg_\\*coder.c, lib/pg/\\*coder.rb)" #. type: Plain text -#: ../README.md:118 +#: ../README.md:160 msgid "" "This is the lower layer, containing encoding classes that convert Ruby " "objects for transmission to the DBMS and decoding classes to convert " "received data back to Ruby objects. The classes are namespaced according to " -"their format and direction in PG::TextEncoder, PG::TextDecoder, PG::" -"BinaryEncoder and PG::BinaryDecoder." +"their format and direction in PG::TextEncoder, PG::TextDecoder, " +"PG::BinaryEncoder and PG::BinaryDecoder." msgstr "" "こちらはより低層で、DBMSへ転送するためにRubyのオブジェクトを変換するエンコーディングクラスと、取得してきたデータをRubyのオブジェクトに変換し戻すデコーディングクラスが含まれています。\n" -"クラスはそれぞれの形式によって名前空間 PG::TextEncoder, PG::TextDecoder, PG::BinaryEncoder, そして PG::BinaryDecoder に分かれています。" +"クラスはそれぞれの形式によって名前空間 PG::TextEncoder, PG::TextDecoder, PG::BinaryEncoder, PG::BinaryDecoder に分かれています。" # 以下によるとcomposite typeは複合型と訳すのが良さそうです。 # @@ -365,7 +489,7 @@ msgstr "" # 8.19. オブジェクト識別子データ型 # https://pgsql-jp.github.io/current/html/datatype-oid.html #. type: Plain text -#: ../README.md:124 +#: ../README.md:166 msgid "" "It is possible to assign a type OID, format code (text or binary) and " "optionally a name to an encoder or decoder object. It's also possible to " @@ -378,7 +502,7 @@ msgstr "" "PG::Coder オブジェクトは PG::TypeMap をセットアップしたり、その代わりに単一の値と文字列表現とを相互に変換したりするのに使えます。" #. type: Plain text -#: ../README.md:126 +#: ../README.md:168 msgid "" "The following PostgreSQL column types are supported by ruby-pg (TE = Text " "Encoder, TD = Text Decoder, BE = Binary Encoder, BD = Binary Decoder):" @@ -387,257 +511,265 @@ msgstr "" "Text Decoder、BE = Binary Encoder、BD = Binary Decoder)。" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Integer: [TE](rdoc-ref:PG::TextEncoder::Integer), [TD](rdoc-ref:PG::" -"TextDecoder::Integer), [BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 No " -"links? Switch to [here](https://deveiate.org/code/pg/README_md.html#label-" +"Integer: [TE](rdoc-ref:PG::TextEncoder::Integer), [TD](rdoc-" +"ref:PG::TextDecoder::Integer), [BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 " +"No links? Switch to [here](https://deveiate.org/code/pg/README_md.html#label-" "Type+Casts) 💡" msgstr "" -"Integer: [TE](rdoc-ref:PG::TextEncoder::Integer)、[TD](rdoc-ref:PG::" -"TextDecoder::Integer)、[BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 リンクが" -"ないでしょうか。[こちら](https://deveiate.org/code/pg/README_ja_md." -"html#label-E5-9E-8B-E5-A4-89-E6-8F-9B)を代わりに見てください 💡" +"Integer: [TE](rdoc-ref:PG::TextEncoder::Integer)、[TD](rdoc-" +"ref:PG::TextDecoder::Integer)、[BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 " +"リンクがないでしょうか。[こちら](https://deveiate.org/code/pg/" +"README_ja_md.html#label-E5-9E-8B-E5-A4-89-E6-8F-9B)を代わりに見てください 💡" #. type: Bullet: ' * ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2), [Int4](rdoc-ref:PG::" -"BinaryEncoder::Int4), [Int8](rdoc-ref:PG::BinaryEncoder::Int8)" +"BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2), [Int4](rdoc-" +"ref:PG::BinaryEncoder::Int4), [Int8](rdoc-ref:PG::BinaryEncoder::Int8)" msgstr "" -"BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2)、[Int4](rdoc-ref:PG::" -"BinaryEncoder::Int4)、[Int8](rdoc-ref:PG::BinaryEncoder::Int8)" +"BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2)、[Int4](rdoc-" +"ref:PG::BinaryEncoder::Int4)、[Int8](rdoc-ref:PG::BinaryEncoder::Int8)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Float: [TE](rdoc-ref:PG::TextEncoder::Float), [TD](rdoc-ref:PG::TextDecoder::" -"Float), [BD](rdoc-ref:PG::BinaryDecoder::Float)" +"Float: [TE](rdoc-ref:PG::TextEncoder::Float), [TD](rdoc-" +"ref:PG::TextDecoder::Float), [BD](rdoc-ref:PG::BinaryDecoder::Float)" msgstr "" -"Float: [TE](rdoc-ref:PG::TextEncoder::Float)、[TD](rdoc-ref:PG::TextDecoder::" -"Float)、[BD](rdoc-ref:PG::BinaryDecoder::Float)" +"Float: [TE](rdoc-ref:PG::TextEncoder::Float)、[TD](rdoc-" +"ref:PG::TextDecoder::Float)、[BD](rdoc-ref:PG::BinaryDecoder::Float)" #. type: Bullet: ' * ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"BE: [Float4](rdoc-ref:PG::BinaryEncoder::Float4), [Float8](rdoc-ref:PG::" -"BinaryEncoder::Float8)" -msgstr "BE: [Float4](rdoc-ref:PG::BinaryEncoder::Float4), [Float8](rdoc-ref:PG::BinaryEncoder::Float8)" +"BE: [Float4](rdoc-ref:PG::BinaryEncoder::Float4), [Float8](rdoc-" +"ref:PG::BinaryEncoder::Float8)" +msgstr "" +"BE: [Float4](rdoc-ref:PG::BinaryEncoder::Float4), [Float8](rdoc-" +"ref:PG::BinaryEncoder::Float8)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric), [TD](rdoc-ref:PG::" -"TextDecoder::Numeric)" +"Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric), [TD](rdoc-" +"ref:PG::TextDecoder::Numeric)" msgstr "" -"Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric)、[TD](rdoc-ref:PG::" -"TextDecoder::Numeric)" +"Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric)、[TD](rdoc-" +"ref:PG::TextDecoder::Numeric)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean), [TD](rdoc-ref:PG::" -"TextDecoder::Boolean), [BE](rdoc-ref:PG::BinaryEncoder::Boolean), [BD](rdoc-" -"ref:PG::BinaryDecoder::Boolean)" +"Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean), [TD](rdoc-" +"ref:PG::TextDecoder::Boolean), [BE](rdoc-ref:PG::BinaryEncoder::Boolean), " +"[BD](rdoc-ref:PG::BinaryDecoder::Boolean)" msgstr "" -"Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean)、[TD](rdoc-ref:PG::" -"TextDecoder::Boolean)、[BE](rdoc-ref:PG::BinaryEncoder::Boolean)、[BD](rdoc-" -"ref:PG::BinaryDecoder::Boolean)" +"Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean)、[TD](rdoc-" +"ref:PG::TextDecoder::Boolean)、[BE](rdoc-ref:PG::BinaryEncoder::Boolean)、" +"[BD](rdoc-ref:PG::BinaryDecoder::Boolean)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"String: [TE](rdoc-ref:PG::TextEncoder::String), [TD](rdoc-ref:PG::" -"TextDecoder::String), [BE](rdoc-ref:PG::BinaryEncoder::String), [BD](rdoc-" -"ref:PG::BinaryDecoder::String)" +"String: [TE](rdoc-ref:PG::TextEncoder::String), [TD](rdoc-" +"ref:PG::TextDecoder::String), [BE](rdoc-ref:PG::BinaryEncoder::String), [BD]" +"(rdoc-ref:PG::BinaryDecoder::String)" msgstr "" -"String: [TE](rdoc-ref:PG::TextEncoder::String)、[TD](rdoc-ref:PG::" -"TextDecoder::String)、[BE](rdoc-ref:PG::BinaryEncoder::String)、[BD](rdoc-" -"ref:PG::BinaryDecoder::String)" +"String: [TE](rdoc-ref:PG::TextEncoder::String)、[TD](rdoc-" +"ref:PG::TextDecoder::String)、[BE](rdoc-ref:PG::BinaryEncoder::String)、[BD]" +"(rdoc-ref:PG::BinaryDecoder::String)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea), [TD](rdoc-ref:PG::TextDecoder::" -"Bytea), [BE](rdoc-ref:PG::BinaryEncoder::Bytea), [BD](rdoc-ref:PG::" -"BinaryDecoder::Bytea)" +"Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea), [TD](rdoc-" +"ref:PG::TextDecoder::Bytea), [BE](rdoc-ref:PG::BinaryEncoder::Bytea), [BD]" +"(rdoc-ref:PG::BinaryDecoder::Bytea)" msgstr "" -"Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea)、[TD](rdoc-ref:PG::TextDecoder::" -"Bytea)、[BE](rdoc-ref:PG::BinaryEncoder::Bytea)、[BD](rdoc-ref:PG::" -"BinaryDecoder::Bytea)" +"Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea)、[TD](rdoc-" +"ref:PG::TextDecoder::Bytea)、[BE](rdoc-ref:PG::BinaryEncoder::Bytea)、[BD]" +"(rdoc-ref:PG::BinaryDecoder::Bytea)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64), [TD](rdoc-ref:PG::" -"TextDecoder::FromBase64), [BE](rdoc-ref:PG::BinaryEncoder::FromBase64), [BD]" -"(rdoc-ref:PG::BinaryDecoder::ToBase64)" +"Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64), [TD](rdoc-" +"ref:PG::TextDecoder::FromBase64), [BE](rdoc-" +"ref:PG::BinaryEncoder::FromBase64), [BD](rdoc-" +"ref:PG::BinaryDecoder::ToBase64)" msgstr "" -"Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64)、[TD](rdoc-ref:PG::" -"TextDecoder::FromBase64)、[BE](rdoc-ref:PG::BinaryEncoder::FromBase64)、[BD]" -"(rdoc-ref:PG::BinaryDecoder::ToBase64)" +"Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64)、[TD](rdoc-" +"ref:PG::TextDecoder::FromBase64)、[BE](rdoc-" +"ref:PG::BinaryEncoder::FromBase64)、[BD](rdoc-" +"ref:PG::BinaryDecoder::ToBase64)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "Timestamp:" msgstr "Timestamp:" #. type: Bullet: ' * ' -#: ../README.md:146 +#: ../README.md:188 msgid "" "TE: [local](rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone), [UTC](rdoc-" -"ref:PG::TextEncoder::TimestampUtc), [with-TZ](rdoc-ref:PG::TextEncoder::" -"TimestampWithTimeZone)" +"ref:PG::TextEncoder::TimestampUtc), [with-TZ](rdoc-" +"ref:PG::TextEncoder::TimestampWithTimeZone)" msgstr "" "TE: [現地時間](rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone)、[UTC]" -"(rdoc-ref:PG::TextEncoder::TimestampUtc)、[タイムゾーン付き](rdoc-ref:PG::" -"TextEncoder::TimestampWithTimeZone)" +"(rdoc-ref:PG::TextEncoder::TimestampUtc)、[タイムゾーン付き](rdoc-" +"ref:PG::TextEncoder::TimestampWithTimeZone)" #. type: Bullet: ' * ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"TD: [local](rdoc-ref:PG::TextDecoder::TimestampLocal), [UTC](rdoc-ref:PG::" -"TextDecoder::TimestampUtc), [UTC-to-local](rdoc-ref:PG::TextDecoder::" -"TimestampUtcToLocal)" +"TD: [local](rdoc-ref:PG::TextDecoder::TimestampLocal), [UTC](rdoc-" +"ref:PG::TextDecoder::TimestampUtc), [UTC-to-local](rdoc-" +"ref:PG::TextDecoder::TimestampUtcToLocal)" msgstr "" -"TD: [現地時間](rdoc-ref:PG::TextDecoder::TimestampLocal)、[UTC](rdoc-ref:PG::" -"TextDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-ref:PG::TextDecoder::" -"TimestampUtcToLocal)" +"TD: [現地時間](rdoc-ref:PG::TextDecoder::TimestampLocal)、[UTC](rdoc-" +"ref:PG::TextDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-" +"ref:PG::TextDecoder::TimestampUtcToLocal)" #. type: Bullet: ' * ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"BE: [local](rdoc-ref:PG::BinaryEncoder::TimestampLocal), [UTC](rdoc-ref:PG::" -"BinaryEncoder::TimestampUtc)" -msgstr "BE: [現地時間](rdoc-ref:PG::BinaryEncoder::TimestampLocal)、[UTC](rdoc-ref:PG::BinaryEncoder::TimestampUtc)" +"BE: [local](rdoc-ref:PG::BinaryEncoder::TimestampLocal), [UTC](rdoc-" +"ref:PG::BinaryEncoder::TimestampUtc)" +msgstr "" +"BE: [現地時間](rdoc-ref:PG::BinaryEncoder::TimestampLocal)、[UTC](rdoc-" +"ref:PG::BinaryEncoder::TimestampUtc)" #. type: Bullet: ' * ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"BD: [local](rdoc-ref:PG::BinaryDecoder::TimestampLocal), [UTC](rdoc-ref:PG::" -"BinaryDecoder::TimestampUtc), [UTC-to-local](rdoc-ref:PG::BinaryDecoder::" -"TimestampUtcToLocal)" +"BD: [local](rdoc-ref:PG::BinaryDecoder::TimestampLocal), [UTC](rdoc-" +"ref:PG::BinaryDecoder::TimestampUtc), [UTC-to-local](rdoc-" +"ref:PG::BinaryDecoder::TimestampUtcToLocal)" msgstr "" -"BD: [現地時間](rdoc-ref:PG::BinaryDecoder::TimestampLocal)、[UTC](rdoc-ref:" -"PG::BinaryDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-ref:PG::" -"BinaryDecoder::TimestampUtcToLocal)" +"BD: [現地時間](rdoc-ref:PG::BinaryDecoder::TimestampLocal)、[UTC](rdoc-" +"ref:PG::BinaryDecoder::TimestampUtc)、[UTCから現地時間へ](rdoc-" +"ref:PG::BinaryDecoder::TimestampUtcToLocal)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Date: [TE](rdoc-ref:PG::TextEncoder::Date), [TD](rdoc-ref:PG::TextDecoder::" -"Date), [BE](rdoc-ref:PG::BinaryEncoder::Date), [BD](rdoc-ref:PG::" -"BinaryDecoder::Date)" -msgstr "日付:[TE](rdoc-ref:PG::TextEncoder::Date)、[TD](rdoc-ref:PG::TextDecoder::Date)、[BE](rdoc-ref:PG::BinaryEncoder::Date)、[BD](rdoc-ref:PG::BinaryDecoder::Date)" +"Date: [TE](rdoc-ref:PG::TextEncoder::Date), [TD](rdoc-" +"ref:PG::TextDecoder::Date), [BE](rdoc-ref:PG::BinaryEncoder::Date), [BD]" +"(rdoc-ref:PG::BinaryDecoder::Date)" +msgstr "Date: [TE](rdoc-ref:PG::TextEncoder::Date)、[TD](rdoc-ref:PG::TextDecoder::Date)、[BE](rdoc-ref:PG::BinaryEncoder::Date)、[BD](rdoc-ref:PG::BinaryDecoder::Date)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"JSON and JSONB: [TE](rdoc-ref:PG::TextEncoder::JSON), [TD](rdoc-ref:PG::" -"TextDecoder::JSON)" +"JSON and JSONB: [TE](rdoc-ref:PG::TextEncoder::JSON), [TD](rdoc-" +"ref:PG::TextDecoder::JSON)" msgstr "" -"JSONとJSONB: [TE](rdoc-ref:PG::TextEncoder::JSON)、[TD](rdoc-ref:PG::" -"TextDecoder::JSON)" +"JSONとJSONB: [TE](rdoc-ref:PG::TextEncoder::JSON)、[TD](rdoc-" +"ref:PG::TextDecoder::JSON)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Inet: [TE](rdoc-ref:PG::TextEncoder::Inet), [TD](rdoc-ref:PG::TextDecoder::" -"Inet)" +"Inet: [TE](rdoc-ref:PG::TextEncoder::Inet), [TD](rdoc-" +"ref:PG::TextDecoder::Inet)" msgstr "" -"Inet: [TE](rdoc-ref:PG::TextEncoder::Inet)、[TD](rdoc-ref:PG::TextDecoder::" -"Inet)" +"Inet: [TE](rdoc-ref:PG::TextEncoder::Inet)、[TD](rdoc-" +"ref:PG::TextDecoder::Inet)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Array: [TE](rdoc-ref:PG::TextEncoder::Array), [TD](rdoc-ref:PG::TextDecoder::" -"Array)" -msgstr "" -"Array: [TE](rdoc-ref:PG::TextEncoder::Array)、[TD](rdoc-ref:PG::TextDecoder::" -"Array)" +"Array: [TE](rdoc-ref:PG::TextEncoder::Array), [TD](rdoc-" +"ref:PG::TextDecoder::Array), [BE](rdoc-ref:PG::BinaryEncoder::Array), [BD]" +"(rdoc-ref:PG::BinaryDecoder::Array)" +msgstr "Array: [TE](rdoc-ref:PG::TextEncoder::Array)、[TD](rdoc-ref:PG::TextDecoder::Array)、[BE](rdoc-ref:PG::BinaryEncoder::Array)、[BD](rdoc-ref:PG::BinaryDecoder::Array)" #. type: Bullet: '* ' -#: ../README.md:146 +#: ../README.md:188 msgid "" -"Composite Type (also called \"Row\" or \"Record\"): [TE](rdoc-ref:PG::" -"TextEncoder::Record), [TD](rdoc-ref:PG::TextDecoder::Record)" +"Composite Type (also called \"Row\" or \"Record\"): [TE](rdoc-" +"ref:PG::TextEncoder::Record), [TD](rdoc-ref:PG::TextDecoder::Record)" msgstr "" -"複合型(「行」や「レコード」などとも言います):[TE](rdoc-ref:PG::" -"TextEncoder::Record)、[TD](rdoc-ref:PG::TextDecoder::Record)" +"複合型(「行」や「レコード」などとも言います):[TE](rdoc-" +"ref:PG::TextEncoder::Record)、[TD](rdoc-ref:PG::TextDecoder::Record)" #. type: Plain text -#: ../README.md:148 +#: ../README.md:190 msgid "" "The following text and binary formats can also be encoded although they are " "not used as column type:" -msgstr "カラム型として使われていませんが、以下のテキスト形式とバイナリ形式もエンコードできます。" +msgstr "" +"カラム型として使われていませんが、以下のテキスト形式とバイナリ形式もエンコー" +"ドできます。" #. type: Bullet: '* ' -#: ../README.md:152 +#: ../README.md:194 msgid "" "COPY input and output data: [TE](rdoc-ref:PG::TextEncoder::CopyRow), [TD]" -"(rdoc-ref:PG::TextDecoder::CopyRow), [BE](rdoc-ref:PG::BinaryEncoder::" -"CopyRow), [BD](rdoc-ref:PG::BinaryDecoder::CopyRow)" +"(rdoc-ref:PG::TextDecoder::CopyRow), [BE](rdoc-" +"ref:PG::BinaryEncoder::CopyRow), [BD](rdoc-ref:PG::BinaryDecoder::CopyRow)" msgstr "" -"COPYの入出力データ:[TE](rdoc-ref:PG::TextEncoder::CopyRow)、[TD](rdoc-ref:" -"PG::TextDecoder::CopyRow), [BE](rdoc-ref:PG::BinaryEncoder::CopyRow), [BD]" -"(rdoc-ref:PG::BinaryDecoder::CopyRow)" +"COPYの入出力データ:[TE](rdoc-ref:PG::TextEncoder::CopyRow)、[TD](rdoc-" +"ref:PG::TextDecoder::CopyRow), [BE](rdoc-ref:PG::BinaryEncoder::CopyRow), " +"[BD](rdoc-ref:PG::BinaryDecoder::CopyRow)" #. type: Bullet: '* ' -#: ../README.md:152 +#: ../README.md:194 msgid "" -"Literal for insertion into SQL string: [TE](rdoc-ref:PG::TextEncoder::" -"QuotedLiteral)" +"Literal for insertion into SQL string: [TE](rdoc-" +"ref:PG::TextEncoder::QuotedLiteral)" msgstr "" "SQL文字列に挿入するリテラル:[TE](rdoc-ref:PG::TextEncoder::QuotedLiteral)" #. type: Bullet: '* ' -#: ../README.md:152 +#: ../README.md:194 msgid "" -"SQL-Identifier: [TE](rdoc-ref:PG::TextEncoder::Identifier), [TD](rdoc-ref:" -"PG::TextDecoder::Identifier)" +"SQL-Identifier: [TE](rdoc-ref:PG::TextEncoder::Identifier), [TD](rdoc-" +"ref:PG::TextDecoder::Identifier)" msgstr "" -"SQLの識別子: [TE](rdoc-ref:PG::TextEncoder::Identifier)、[TD](rdoc-ref:PG::" -"TextDecoder::Identifier)" +"SQLの識別子: [TE](rdoc-ref:PG::TextEncoder::Identifier)、[TD](rdoc-" +"ref:PG::TextDecoder::Identifier)" #. type: Title ### -#: ../README.md:153 +#: ../README.md:195 #, no-wrap -msgid "PG::TypeMap and derivations (ext/pg_type_map*.c, lib/pg/type_map*.rb)" -msgstr "PG::TypeMap とその派生 (ext/pg_type_map*.c, lib/pg/type_map*.rb)" +msgid "TypeMap and derivations (ext/pg_type_map\\*.c, lib/pg/type_map\\*.rb)" +msgstr "TypeMap とその派生 (ext/pg_type_map\\*.c, lib/pg/type_map\\*.rb)" #. type: Plain text -#: ../README.md:159 +#: ../README.md:201 msgid "" -"A TypeMap defines which value will be converted by which encoder/decoder. " -"There are different type map strategies, implemented by several derivations " -"of this class. They can be chosen and configured according to the particular " -"needs for type casting. The default type map is PG::TypeMapAllStrings." +"A PG::TypeMap defines which value will be converted by which encoder/" +"decoder. There are different type map strategies, implemented by several " +"derivations of this class. They can be chosen and configured according to " +"the particular needs for type casting. The default type map is " +"PG::TypeMapAllStrings." msgstr "" -"TypeMapはエンコーダーまたはデコーダーのどちらによってどの値を変換するかを定義します。\n" -"様々な型の対応付け戦略があるので、このクラスにはいくつかの派生が実装されています。\n" -"型変換の特有の需要に合わせてそれらの派生から選んで調整を加えることができます。\n" +"PG::TypeMap はどのエンコーダーないしデコーダーによってどの値が変換されるかを定義します。\n" +"様々な型の対応付けの戦略があり、このクラスの複数の派生により実装されています。\n" +"型変換の特有の需要に合わせてそれらから選んで構成できます。\n" "既定の型の対応付けは PG::TypeMapAllStrings です。" #. type: Plain text -#: ../README.md:163 +#: ../README.md:205 msgid "" "A type map can be assigned per connection or per query respectively per " "result set. Type maps can also be used for COPY in and out data streaming. " "See PG::Connection#copy_data ." msgstr "" -"型の対応付けは、結果の集合それぞれに対し、接続毎ないしクエリ毎に割り当てることができます。\n" +"型の対応付けは、結果の集合それぞれに対し、接続毎ないし問い合わせ毎に割り当てることができます。\n" "型の対応付けはCOPYの入出力データストリーミングでも使うことができます。\n" "PG::Connection#copy_data を参照してください。" #. type: Plain text -#: ../README.md:165 +#: ../README.md:207 msgid "The following base type maps are available:" msgstr "以下の基底となる型の対応付けが使えます。" #. type: Bullet: '* ' -#: ../README.md:171 +#: ../README.md:213 msgid "" "PG::TypeMapAllStrings - encodes and decodes all values to and from strings " "(default)" @@ -646,7 +778,7 @@ msgstr "" "行います(既定)" #. type: Bullet: '* ' -#: ../README.md:171 +#: ../README.md:213 msgid "" "PG::TypeMapByClass - selects encoder based on the class of the value to be " "sent" @@ -654,72 +786,88 @@ msgstr "" "PG::TypeMapByClass - 送信する値のクラスに基づいてエンコーダーを選択します" #. type: Bullet: '* ' -#: ../README.md:171 +#: ../README.md:213 msgid "PG::TypeMapByColumn - selects encoder and decoder by column order" msgstr "" "PG::TypeMapByColumn - カラムの順番によってエンコーダーとデコーダーを選択しま" "す" #. type: Bullet: '* ' -#: ../README.md:171 +#: ../README.md:213 msgid "PG::TypeMapByOid - selects decoder by PostgreSQL type OID" msgstr "" "PG::TypeMapByOid - PostgreSQLのOIDデータ型によってデコーダーを選択します" #. type: Bullet: '* ' -#: ../README.md:171 +#: ../README.md:213 msgid "PG::TypeMapInRuby - define a custom type map in ruby" msgstr "PG::TypeMapInRuby - Rubyで独自の型の対応付けを定義します" #. type: Plain text -#: ../README.md:173 +#: ../README.md:215 msgid "" -"The following type maps are prefilled with type mappings from the PG::" -"BasicTypeRegistry :" -msgstr "以下の型の対応付けは PG::BasicTypeRegistry 由来の型の対応付けが入った状態になっています。" +"The following type maps are prefilled with type mappings from the " +"PG::BasicTypeRegistry :" +msgstr "" +"以下の型の対応付けは PG::BasicTypeRegistry 由来の型の対応付けが入った状態に" +"なっています。" #. type: Bullet: '* ' -#: ../README.md:177 +#: ../README.md:219 msgid "" "PG::BasicTypeMapForResults - a PG::TypeMapByOid prefilled with decoders for " "common PostgreSQL column types" -msgstr "PG::BasicTypeMapForResults - PG::TypeMapByOid によくあるPostgreSQLカラム型用にデコーダーが入った状態になっています" +msgstr "" +"PG::BasicTypeMapForResults - PG::TypeMapByOid によくあるPostgreSQLカラム型用" +"にデコーダーが入った状態になっています" #. type: Bullet: '* ' -#: ../README.md:177 +#: ../README.md:219 msgid "" "PG::BasicTypeMapBasedOnResult - a PG::TypeMapByOid prefilled with encoders " "for common PostgreSQL column types" -msgstr "PG::BasicTypeMapBasedOnResult - PG::TypeMapByOid によくあるPostgreSQLカラム型用のエンコーダーが入った状態になっています" +msgstr "" +"PG::BasicTypeMapBasedOnResult - PG::TypeMapByOid によくあるPostgreSQLカラム型" +"用のエンコーダーが入った状態になっています" #. type: Bullet: '* ' -#: ../README.md:177 +#: ../README.md:219 msgid "" "PG::BasicTypeMapForQueries - a PG::TypeMapByClass prefilled with encoders " "for common Ruby value classes" -msgstr "PG::BasicTypeMapForQueries - PG::TypeMapByClass によくあるRubyの値クラス用にエンコーダーが入った状態になっています" +msgstr "" +"PG::BasicTypeMapForQueries - PG::TypeMapByClass によくあるRubyの値クラス用に" +"エンコーダーが入った状態になっています" + +#. type: Plain text +#: ../README.md:221 +msgid "" +"Several type maps can be chained by setting " +"PG::TypeMap::DefaultTypeMappable#default_type_map ." +msgstr "PG::TypeMap::DefaultTypeMappable#default_type_map を設定することで複数の型の対応付けを連鎖させられます。" #. type: Title ## -#: ../README.md:179 +#: ../README.md:222 #, no-wrap msgid "Thread support" msgstr "スレッド対応" #. type: Plain text -#: ../README.md:184 +#: ../README.md:227 msgid "" -"PG is thread safe in such a way that different threads can use different PG::" -"Connection objects concurrently. However it is not safe to access any Pg " -"objects simultaneously from more than one thread. So make sure to open a " -"new database server connection for every new thread or use a wrapper library " -"like ActiveRecord that manages connections in a thread safe way." +"PG is thread safe in such a way that different threads or fibers can use " +"different PG::Connection objects concurrently. However it is not safe to " +"access any PG object simultaneously from more than one thread or fiber " +"unless the object is frozen. So make sure to open a new database server " +"connection for every new thread or use a wrapper library like ActiveRecord " +"that manages connections in a thread safe way." msgstr "" -"PGには個々のスレッドが別々の PG::Connection オブジェクトを同時に使えるという点でスレッド安全性があります。\n" -"しかし1つ以上のスレッドから同時にPgのオブジェクトにアクセスすると安全ではありません。\n" -"そのため必ず、毎回新しいスレッドを作るときに新しいデータベースサーバー接続を開くか、スレッド安全性のある方法で接続を管理するActiveRecordのようなラッパーライブラリを使うようにしてください。" +"PG には個々のスレッドないしファイバが個々の PG::Connection オブジェクトを並行に使えるという点でスレッド安全です。\n" +"しかしながら1つ以上のスレッドないしファイバから同時に何らかの PG のオブジェクトにアクセスするのは安全ではありません。\n" +"そのため必ず、新しいスレッドないしファイバの一つ一つに対して新しいデータベースサーバー接続を開くか、スレッド安全な方法で接続を管理するActiveRecordのようなラッパーライブラリを使ってください。" #. type: Plain text -#: ../README.md:186 +#: ../README.md:229 msgid "" "If messages like the following are printed to stderr, you're probably using " "one connection from several threads:" @@ -728,7 +876,7 @@ msgstr "" "が1つの接続を使っています。" #. type: Plain text -#: ../README.md:192 +#: ../README.md:235 #, no-wrap msgid "" " message type 0x31 arrived from server while idle\n" @@ -744,50 +892,53 @@ msgstr "" " message type 0x5a arrived from server while idle\n" #. type: Title ## -#: ../README.md:194 +#: ../README.md:237 #, no-wrap msgid "Fiber IO scheduler support" msgstr "Fiber IOスケジューラー対応" #. type: Plain text -#: ../README.md:201 +#: ../README.md:244 msgid "" "Pg is fully compatible with `Fiber.scheduler` introduced in Ruby-3.0 since " "pg-1.3.0. On Windows support for `Fiber.scheduler` is available on Ruby-3.1 " -"or newer. All possibly blocking IO operations are routed through the `Fiber." -"scheduler` if one is registered for the running thread. That is why pg " -"internally uses the asynchronous libpq interface even for synchronous/" +"or newer. All possibly blocking IO operations are routed through the " +"`Fiber.scheduler` if one is registered for the running thread. That is why " +"pg internally uses the asynchronous libpq interface even for synchronous/" "blocking method calls. It also uses Ruby's DNS resolution instead of " "libpq's builtin functions." msgstr "" -"pg-1.3.0以降で、PgはRuby-3.0で導入された`Fiber.scheduler`に完全に対応しています。\n" +"pg-1.3.0以降で、PgはRuby-3.0で導入された`Fiber.scheduler`に完全に対応していま" +"す。\n" "Windowsでは、`Fiber.scheduler`対応はRuby-3.1以降で使えます。\n" -"`Fiber.scheduler`が走らせているスレッドに登録されている場合、起こりうる全てのブロッキングIO操作はそのスケジューラーを経由します。\n" -"同期的であったりブロックしたりするメソッド呼び出しについてもpgが内部的に非同期のlibpqインターフェースを使っているのはそれが理由です。\n" +"`Fiber.scheduler`が走らせているスレッドに登録されている場合、起こりうる全ての" +"ブロッキングIO操作はそのスケジューラーを経由します。\n" +"同期的であったりブロックしたりするメソッド呼び出しについてもpgが内部的に非同" +"期のlibpqインターフェースを使っているのはそれが理由です。\n" "またlibpqの組み込み関数に代えてRubyのDNS解決を使っています。" #. type: Plain text -#: ../README.md:205 +#: ../README.md:248 msgid "" "Internally Pg always uses the nonblocking connection mode of libpq. It then " "behaves like running in blocking mode but ensures, that all blocking IO is " -"handled in Ruby through a possibly registered `Fiber.scheduler`. When `PG::" -"Connection.setnonblocking(true)` is called then the nonblocking state stays " -"enabled, but the additional handling of blocking states is disabled, so that " -"the calling program has to handle blocking states on its own." +"handled in Ruby through a possibly registered `Fiber.scheduler`. When " +"`PG::Connection#setnonblocking(true)` is called then the nonblocking state " +"stays enabled, but the additional handling of blocking states is disabled, " +"so that the calling program has to handle blocking states on its own." msgstr "" -"内部的にPgは常にlibpqのノンブロッキング接続モードを使います。\n" -"それからブロッキングモードで走っているように振舞いますが、もし`Fiber.scheduler`が登録されていれば全てのブロッキングIOはそのスケジューラーを通じてRubyで制御されます。\n" +"内部的に Pg は常にlibpqのノンブロッキング接続モードを使います。\n" +"それからブロッキングモードで走っているように振舞いますが、すべてのブロッキングIOが、可能であれば登録された`Fiber.schedular`を通じて、確実にRubyで制御されます。\n" "`PG::Connection.setnonblocking(true)`が呼ばれたらノンブロッキング状態が有効になったままになりますが、それ以降のブロッキング状態の制御が無効になるので、呼び出しているプログラムはブロッキング状態を自力で制御しなければなりません。" #. type: Plain text -#: ../README.md:209 +#: ../README.md:252 msgid "" -"An exception to this rule are the methods for large objects like `PG::" -"Connection#lo_create` and authentication methods using external libraries " -"(like GSSAPI authentication). They are not compatible with `Fiber." -"scheduler`, so that blocking states are not passed to the registered IO " -"scheduler. That means the operation will work properly, but IO waiting " +"An exception to this rule are the methods for large objects like " +"`PG::Connection#lo_create` and authentication methods using external " +"libraries (like GSSAPI authentication). They are not compatible with " +"`Fiber.scheduler`, so that blocking states are not passed to the registered " +"IO scheduler. That means the operation will work properly, but IO waiting " "states can not be used to switch to another Fiber doing IO." msgstr "" "この規則の1つの例外には、`PG::Connection#lo_create`や外部ライブラリを使う認証" @@ -797,41 +948,45 @@ msgstr "" "別のIOを扱うFiberから使用を切り替えてくることができなくなります。" #. type: Title ## -#: ../README.md:211 +#: ../README.md:254 #, no-wrap msgid "Ractor support" msgstr "Ractor対応" #. type: Plain text -#: ../README.md:217 +#: ../README.md:260 msgid "" "Pg is fully compatible with Ractor introduced in Ruby-3.0 since pg-1.5.0. " "All type en/decoders and type maps are shareable between ractors if they are " -"made frozen by `Ractor.make_shareable`. Also frozen PG::Result and PG::" -"Tuple objects can be shared. All frozen objects (except PG::Connection) can " -"still be used to do communication with the PostgreSQL server or to read " +"made frozen by `Ractor.make_shareable`. Also frozen PG::Result and " +"PG::Tuple objects can be shared. All frozen objects (except PG::Connection) " +"can still be used to do communication with the PostgreSQL server or to read " "retrieved data." msgstr "" "pg-1.5.0以降で、PgはRuby-3.0で導入されたRactorと完全な互換性があります。\n" -"型エンコーダーないしデコーダー、及び型の対応付けが`Ractor.make_shareable`により凍結されている場合、これらをractor間で共有できます。\n" +"型エンコーダーないしデコーダー、及び型の対応付けが`Ractor.make_shareable`によ" +"り凍結されている場合、これらをractor間で共有できます。\n" "また凍結された PG::Result と PG::Tuple オブジェクトも共有できます。\n" -"少なくとも全ての凍結されたオブジェクト(ただし PG::Connection を除く)はPostgreSQLサーバーとのやり取りをしたり取得されたデータを読むのに使えます。" +"少なくとも全ての凍結されたオブジェクト(ただし PG::Connection を除く)は" +"PostgreSQLサーバーとのやり取りをしたり取得されたデータを読むのに使えます。" #. type: Plain text -#: ../README.md:219 +#: ../README.md:262 msgid "" "PG::Connection is not shareable and must be created within each Ractor to " "establish a dedicated connection." -msgstr "PG::Connection は共有できません。個々の接続を確立するために、それぞれのRactor内で作られなければなりません。" +msgstr "" +"PG::Connection は共有できません。個々の接続を確立するために、それぞれのRactor" +"内で作られなければなりません。" #. type: Title ## -#: ../README.md:221 +#: ../README.md:264 #, no-wrap msgid "Contributing" msgstr "貢献" #. type: Plain text -#: ../README.md:225 +#: ../README.md:268 msgid "" "To report bugs, suggest features, or check out the source with Git, [check " "out the project page](https://github.com/ged/ruby-pg)." @@ -840,18 +995,18 @@ msgstr "" "ロジェクトページをご確認ください](https://github.com/ged/ruby-pg)。" #. type: Plain text -#: ../README.md:227 +#: ../README.md:270 msgid "After checking out the source, install all dependencies:" msgstr "ソースをチェックアウトしたあとは全ての依存関係をインストールします。" #. type: Plain text -#: ../README.md:229 +#: ../README.md:272 #, no-wrap msgid " $ bundle install\n" msgstr " $ bundle install\n" #. type: Plain text -#: ../README.md:232 +#: ../README.md:275 msgid "" "Cleanup extension files, packaging files, test databases. Run this to " "change between PostgreSQL versions:" @@ -860,24 +1015,24 @@ msgstr "" "ンドを走らせてください。PostgreSQLのバージョンも切り替わります。" #. type: Plain text -#: ../README.md:234 +#: ../README.md:277 #, no-wrap msgid " $ rake clean\n" msgstr " $ rake clean\n" #. type: Plain text -#: ../README.md:236 +#: ../README.md:279 msgid "Compile extension:" msgstr "拡張をコンパイルするには次のようにします。" #. type: Plain text -#: ../README.md:238 +#: ../README.md:281 #, no-wrap msgid " $ rake compile\n" msgstr " $ rake compile\n" #. type: Plain text -#: ../README.md:240 +#: ../README.md:283 msgid "" "Run tests/specs on the PostgreSQL version that `pg_config --bindir` points " "to:" @@ -886,13 +1041,13 @@ msgstr "" "には次のようにします。" #. type: Plain text -#: ../README.md:242 +#: ../README.md:285 #, no-wrap msgid " $ rake test\n" msgstr " $ rake test\n" #. type: Plain text -#: ../README.md:244 +#: ../README.md:287 msgid "" "Or run a specific test per file and line number on a specific PostgreSQL " "version:" @@ -901,29 +1056,29 @@ msgstr "" "トを走らせるには次のようにします。" #. type: Plain text -#: ../README.md:246 +#: ../README.md:289 #, no-wrap msgid " $ PATH=/usr/lib/postgresql/14/bin:$PATH rspec -Ilib -fd spec/pg/connection_spec.rb:455\n" msgstr " $ PATH=/usr/lib/postgresql/14/bin:$PATH rspec -Ilib -fd spec/pg/connection_spec.rb:455\n" #. type: Plain text -#: ../README.md:248 +#: ../README.md:291 msgid "Generate the API documentation:" msgstr "APIドキュメントを生成するには次のようにします。" #. type: Plain text -#: ../README.md:250 +#: ../README.md:293 #, no-wrap msgid " $ rake docs\n" msgstr " $ rake docs\n" #. type: Plain text -#: ../README.md:252 +#: ../README.md:295 msgid "Make sure, that all bugs and new features are verified by tests." msgstr "必ず全てのバグと新機能についてテストを使って検証してください。" #. type: Plain text -#: ../README.md:255 +#: ../README.md:298 msgid "" "The current maintainers are Michael Granger and Lars " "Kanis ." @@ -932,58 +1087,58 @@ msgstr "" "reinsdorf.de>です。" #. type: Title ## -#: ../README.md:257 +#: ../README.md:300 #, no-wrap msgid "Copying" msgstr "著作権" #. type: Plain text -#: ../README.md:260 +#: ../README.md:303 msgid "Copyright (c) 1997-2022 by the authors." msgstr "Copyright (c) 1997-2022 by the authors." #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Jeff Davis " msgstr "Jeff Davis " #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Guy Decoux (ts) " msgstr "Guy Decoux (ts) " #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Michael Granger " msgstr "Michael Granger " #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Lars Kanis " msgstr "Lars Kanis " #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Dave Lee" msgstr "Dave Lee" #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Eiji Matsumoto " msgstr "Eiji Matsumoto " #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Yukihiro Matsumoto " msgstr "Yukihiro Matsumoto " #. type: Bullet: '* ' -#: ../README.md:269 +#: ../README.md:312 msgid "Noboru Saitou " msgstr "Noboru Saitou " #. type: Plain text -#: ../README.md:273 +#: ../README.md:316 msgid "" "You may redistribute this software under the same terms as Ruby itself; see " "https://www.ruby-lang.org/en/about/license.txt or the BSDL file in the " @@ -997,7 +1152,7 @@ msgstr "" "のBSDLファイルを参照してください)" #. type: Plain text -#: ../README.md:276 +#: ../README.md:319 msgid "" "Portions of the code are from the PostgreSQL project, and are distributed " "under the terms of the PostgreSQL license, included in the file POSTGRES." @@ -1009,28 +1164,44 @@ msgstr "" "許諾の条件の元で配布されます。ファイルPOSTGRESに含まれています)" #. type: Plain text -#: ../README.md:278 +#: ../README.md:321 msgid "Portions copyright LAIKA, Inc." msgstr "Portions copyright LAIKA, Inc." #. type: Title ## -#: ../README.md:280 +#: ../README.md:323 #, no-wrap msgid "Acknowledgments" msgstr "謝辞" #. type: Plain text -#: ../README.md:284 +#: ../README.md:327 msgid "" "See Contributors.rdoc for the many additional fine people that have " "contributed to this library over the years." -msgstr "長年にわたって貢献してくださった方々については Contributors.rdoc を参照してください。" +msgstr "" +"長年にわたって貢献してくださった方々については Contributors.rdoc を参照してく" +"ださい。" #. type: Plain text -#: ../README.md:286 +#: ../README.md:329 msgid "" "We are thankful to the people at the ruby-list and ruby-dev mailing lists. " "And to the people who developed PostgreSQL." msgstr "" "ruby-listとruby-devメーリングリストの方々に感謝します。またPostgreSQLを開発さ" "れた方々へも謝意を表します。" + +#~ msgid "" +#~ "It usually works with earlier versions of Ruby/PostgreSQL as well, but " +#~ "those are not regularly tested." +#~ msgstr "" +#~ "それより前のバージョンのRubyやPostgreSQLでも通常は同様に動作しますが、定期" +#~ "的なテストはされていません。" + +#~ msgid "" +#~ "Array: [TE](rdoc-ref:PG::TextEncoder::Array), [TD](rdoc-" +#~ "ref:PG::TextDecoder::Array)" +#~ msgstr "" +#~ "Array: [TE](rdoc-ref:PG::TextEncoder::Array)、[TD](rdoc-" +#~ "ref:PG::TextDecoder::Array)"