From: Rocky Bernstein Date: 2010-09-10T03:24:20+09:00 Subject: [ruby-core:32253] Re: Ruby 2.0 Wish-list? --0016e659f49c6bfa91048fd7a03a Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Thanks everyone for the comments. 2010/9/9 Yusuke ENDOH > Hi, > > 2010/9/9 Nikolai Weibull : > > On Thu, Sep 9, 2010 at 07:00, Yukihiro Matsumoto > wrote: > >> Hi, > >> > >> In message "Re: [ruby-core:32200] Ruby 2.0 Wish-list?" > >> on Thu, 9 Sep 2010 11:49:06 +0900, Rocky Bernstein < > rockyb@rubyforge.org> writes: > >> > >> |Any plans for error messages in languages other than English? > >> > >> For application internationalization, you can use gettext, etc. > >> But for Ruby itself, we have no plan, because: > >> > >> * for most of Ruby code use English words, so that we can expect > >> programmers to recognize English messages. > >> * allowing message switch make the interpreter more complex, and > >> bloat. > > > > * Localized error messages are a lot more difficult to Google > > * it requires translation whenever new exception is introduced, > which may block release management. > > * you can do it yourself if you really need it :-) > > > $ cat japanese-error-message.rb > # coding: UTF-8 > > at_exit do > trace = $!.backtrace > msg = $!.to_s > msg = case msg > when /\Aundefined local variable or method `(.*?)' for (.*?)\z/ > "#$2 には #$1 というローカル変数もメソッドも定義されていません" > # ... > else > msg > end > puts "#{ trace.shift }: #{ msg } (#{ $!.class })" > trace.each {|t| puts " from " + t } > exit! > end > > > $ ./ruby -r./japanese-error-message -e 'def foo; bar; end; foo' > -e:1:in `foo': main:Object には bar というローカル変数もメソッドも定義されていません (NameError) > from -e:1:in `
' > > -- > Yusuke Endoh > > --0016e659f49c6bfa91048fd7a03a Content-Type: text/html; charset=ISO-2022-JP Content-Transfer-Encoding: base64 VGhhbmtzIGV2ZXJ5b25lIGZvciB0aGUgY29tbWVudHMuIDxicj48YnI+PGRpdiBjbGFzcz0iZ21h aWxfcXVvdGUiPjIwMTAvOS85IFl1c3VrZSBFTkRPSCA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhy ZWY9Im1haWx0bzptYW1lQHRzZy5uZS5qcCI+bWFtZUB0c2cubmUuanA8L2E+Jmd0Ozwvc3Bhbj48 YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwcHQgMHB0 IDBwdCAwLjhleDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBh ZGRpbmctbGVmdDogMWV4OyI+CkhpLDxicj4KPGJyPgoyMDEwLzkvOSBOaWtvbGFpIFdlaWJ1bGwg Jmx0OzxhIGhyZWY9Im1haWx0bzpub3dAYml0d2kuc2UiPm5vd0BiaXR3aS5zZTwvYT4mZ3Q7Ojxi cj4KJmd0OyBPbiBUaHUsIFNlcCA5LCAyMDEwIGF0IDA3OjAwLCBZdWtpaGlybyBNYXRzdW1vdG8g Jmx0OzxhIGhyZWY9Im1haWx0bzptYXR6QHJ1YnktbGFuZy5vcmciPm1hdHpAcnVieS1sYW5nLm9y ZzwvYT4mZ3Q7IHdyb3RlOjxicj4KJmd0OyZndDsgSGksPGJyPgomZ3Q7Jmd0Ozxicj4KJmd0OyZn dDsgSW4gbWVzc2FnZSAmcXVvdDtSZTogW3J1YnktY29yZTozMjIwMF0gUnVieSAyLjAgV2lzaC1s aXN0PyZxdW90Ozxicj4KJmd0OyZndDsgJm5ic3A7ICZuYnNwO29uIFRodSwgOSBTZXAgMjAxMCAx MTo0OTowNiArMDkwMCwgUm9ja3kgQmVybnN0ZWluICZsdDs8YSBocmVmPSJtYWlsdG86cm9ja3li QHJ1Ynlmb3JnZS5vcmciPnJvY2t5YkBydWJ5Zm9yZ2Uub3JnPC9hPiZndDsgd3JpdGVzOjxicj4K Jmd0OyZndDs8YnI+CiZndDsmZ3Q7IHxBbnkgcGxhbnMgZm9yIGVycm9yIG1lc3NhZ2VzIGluIGxh bmd1YWdlcyBvdGhlciB0aGFuIEVuZ2xpc2g/PGJyPgomZ3Q7Jmd0Ozxicj4KJmd0OyZndDsgRm9y IGFwcGxpY2F0aW9uIGludGVybmF0aW9uYWxpemF0aW9uLCB5b3UgY2FuIHVzZSBnZXR0ZXh0LCBl dGMuPGJyPgomZ3Q7Jmd0OyBCdXQgZm9yIFJ1YnkgaXRzZWxmLCB3ZSBoYXZlIG5vIHBsYW4sIGJl Y2F1c2U6PGJyPgomZ3Q7Jmd0Ozxicj4KJmd0OyZndDsgJm5ic3A7KiBmb3IgbW9zdCBvZiBSdWJ5 IGNvZGUgdXNlIEVuZ2xpc2ggd29yZHMsIHNvIHRoYXQgd2UgY2FuIGV4cGVjdDxicj4KJmd0OyZn dDsgJm5ic3A7ICZuYnNwO3Byb2dyYW1tZXJzIHRvIHJlY29nbml6ZSBFbmdsaXNoIG1lc3NhZ2Vz Ljxicj4KJmd0OyZndDsgJm5ic3A7KiBhbGxvd2luZyBtZXNzYWdlIHN3aXRjaCBtYWtlIHRoZSBp bnRlcnByZXRlciBtb3JlIGNvbXBsZXgsIGFuZDxicj4KJmd0OyZndDsgJm5ic3A7ICZuYnNwO2Js b2F0Ljxicj4KJmd0Ozxicj4KJmd0OyAmbmJzcDsqIExvY2FsaXplZCBlcnJvciBtZXNzYWdlcyBh cmUgYSBsb3QgbW9yZSBkaWZmaWN1bHQgdG8gR29vZ2xlPGJyPgo8YnI+CiZuYnNwOyogaXQgcmVx dWlyZXMgdHJhbnNsYXRpb24gd2hlbmV2ZXIgbmV3IGV4Y2VwdGlvbiBpcyBpbnRyb2R1Y2VkLDxi cj4KICZuYnNwOyB3aGljaCBtYXkgYmxvY2sgcmVsZWFzZSBtYW5hZ2VtZW50Ljxicj4KPGJyPgom bmJzcDsqIHlvdSBjYW4gZG8gaXQgeW91cnNlbGYgaWYgeW91IHJlYWxseSBuZWVkIGl0IDotKTxi cj4KPGJyPgo8YnI+CiQgY2F0IGphcGFuZXNlLWVycm9yLW1lc3NhZ2UucmI8YnI+CiMgY29kaW5n OiBVVEYtODxicj4KPGJyPgphdF9leGl0IGRvPGJyPgogJm5ic3A7dHJhY2UgPSAkIS5iYWNrdHJh Y2U8YnI+CiAmbmJzcDttc2cgPSAkIS50b19zPGJyPgogJm5ic3A7bXNnID0gY2FzZSBtc2c8YnI+ CiAmbmJzcDt3aGVuIC9cQXVuZGVmaW5lZCBsb2NhbCB2YXJpYWJsZSBvciBtZXRob2QgYCguKj8p JiMzOTsgZm9yICguKj8pXHovPGJyPgogJm5ic3A7ICZuYnNwOyZxdW90OyMkMiAbJEIkSyRPGyhC ICMkMSAbJEIkSCQkJCYlbSE8JSsla0pRP3QkYiVhJT0lQyVJJGJEajVBJDUkbCRGJCQkXiQ7JHMb KEImcXVvdDs8YnI+CiAmbmJzcDsjIC4uLjxicj4KICZuYnNwO2Vsc2U8YnI+CiAmbmJzcDsgJm5i c3A7bXNnPGJyPgogJm5ic3A7ZW5kPGJyPgogJm5ic3A7cHV0cyAmcXVvdDsjeyB0cmFjZS5zaGlm dCB9OiAjeyBtc2cgfSAoI3sgJCEuY2xhc3MgfSkmcXVvdDs8YnI+CiAmbmJzcDt0cmFjZS5lYWNo IHt8dHwgcHV0cyAmcXVvdDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZnJvbSAmcXVvdDsg KyB0IH08YnI+CiAmbmJzcDtleGl0ITxicj4KZW5kPGJyPgo8YnI+Cjxicj4KJCAuL3J1YnkgLXIu L2phcGFuZXNlLWVycm9yLW1lc3NhZ2UgLWUgJiMzOTtkZWYgZm9vOyBiYXI7IGVuZDsgZm9vJiMz OTs8YnI+Ci1lOjE6aW4gYGZvbyYjMzk7OiBtYWluOk9iamVjdCAbJEIkSyRPGyhCIGJhciAbJEIk SCQkJCYlbSE8JSsla0pRP3QkYiVhJT0lQyVJJGJEajVBJDUkbCRGJCQkXiQ7JHMbKEIgKE5hbWVF cnJvcik8YnI+CiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmcm9tIC1lOjE6aW4gYCZsdDtt YWluJmd0OyYjMzk7PGJyPgo8Zm9udCBjb2xvcj0iIzg4ODg4OCI+PGJyPgotLTxicj4KWXVzdWtl IEVuZG9oICZsdDs8YSBocmVmPSJtYWlsdG86bWFtZUB0c2cubmUuanAiPm1hbWVAdHNnLm5lLmpw PC9hPiZndDs8YnI+Cjxicj4KPC9mb250PjwvYmxvY2txdW90ZT48L2Rpdj48YnI+Cg== --0016e659f49c6bfa91048fd7a03a--