Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Encoding.default_internalEncoding.defaut_external を翻訳します #2578

Conversation

ima1zumi
Copy link
Contributor

@ima1zumi ima1zumi commented Jun 7, 2021

解決すること

Encoding.default_internalEncoding.defaut_external は英語版ドキュメントに比べ情報量が少ないため、英語版を翻訳しました。
ただし一部英語版から削っています。

また、Ruby 3.0 対応もとりこみました。 ref: #2458
Feature #16604: Set default for Encoding.default_external to UTF-8 on Windows - Ruby master - Ruby Issue Tracking System

削除箇所

英語版から、このオブジェクトにはデフォルトで Encoding.default_internalEncoding.default_external が使用される…という説明を削除しています。

例えば、英語版に書いてある Time#zone $PROGRAM_NAME は rdoc の説明と異なり Encoding.default_internal が適用されません。
また、列挙されている以外に Encoding.default_internal Encoding.default_external が使用されるオブジェクトがあるか不明でした。
ドキュメントに列挙するオブジェクトだけが Encoding.default_internal Encoding.default_external が使用されるかのような紛らわしい記述になりうるため意図的に削除しています。

検証コード

$PROGRAM_NAMETime#zoneEncoding.default_internal に影響されないこと、 ARGV ENV は影響されること

サンプル.rb

puts "default_internal is #{Encoding.default_internal}"
puts "ARGV[0] encoding is #{ARGV[0].encoding}"
puts "$PROGRAM_NAME encoding is #{$PROGRAM_NAME.encoding}"
puts "ENV encoding is #{ENV['PATH'].encoding}"
puts "Time#zone encoding is #{Time.new.zone.encoding}"

実行結果

❯ ruby -E:sjis サンプル.rb ほげ
default_internal is Windows-31J
ARGV[0] encoding is Windows-31J
$PROGRAM_NAME encoding is UTF-8
ENV encoding is Windows-31J
Time#zone encoding is US-ASCII

[[m:String#encode]] と [[m:String#encode!]] は、引数に Encoding が与えられていない場合、 default_internal を使用します。

Encoding.default_internal = Encoding::SJIS

str = 'hoge'
p str.encoding
# => #<Encoding:UTF-8>
p str.encode.encoding
# => #<Encoding:Windows-31J>
p str.encode!.encoding
# => #<Encoding:Windows-31J>

スクリーンショット

修正前

image

修正後

image

リンク

class Encoding - Documentation for Ruby 3.0.0
class Encoding (Ruby 3.0.0 リファレンスマニュアル)

`Time#zone` `$PROGRAM_NAME` は rdoc の説明と異なり `Encoding.default_external` が適用されない。
また、列挙されている以外に `Encoding.default_internal` `Encoding.default_external` が使用されるオブジェクトがあるか不明だった。
ドキュメントに書くオブジェクトだけが `Encoding.default_internal` `Encoding.default_external` が使用されるかのような紛らわしい記述になりうるため削除した。

ref: `Encoding.default_internal` `Encoding.default_external` の ドキュメントが書かれた commit
ruby/ruby@40e6fac
--- default_internal -> Encoding | nil
既定の内部エンコーディングを返します。

[[m:String#encode]] と [[m:String#encode!]] は、引数に Encoding が与えられていない場合、 default_internal を使用します。

文字列リテラルを作成した場合、エンコーディングには default_internal ではなく __ENCODING__ 特殊変数が使用されます。
Copy link
Member

@znz znz Jun 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

__ENCODING__ 特殊変数で参照できるスクリプトエンコーディング のように「スクリプトエンコーディング」という言葉を入れると良さそうです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そうですね!77aa3b8 で追加しました。

`Encoding.default_internal` が何を示しているのか明確ではなかったため加筆した。合わせて `Encoding.default_external` も加筆した。
@ima1zumi
Copy link
Contributor Author

読み直して少し加筆しました。 b0f9e86

@znz
Copy link
Member

znz commented Aug 24, 2021

「等」と「など」が重複しているので、「open で開くファイルなどで、」のように「標準入出力、コマンドライン引数、open で開くファイル」だけに「など」をつければ良さそうに思いました。

「等」と「など」が重複していたので「等」を消しました
@ima1zumi
Copy link
Contributor Author

#2578 (comment) 消しました!

ce74730

@znz znz merged commit 60bc409 into rurema:master Sep 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants