小笠原です。

LibreLogo ですが、po ベースでがーっと変更かけました。
ので、ざーっと見ていただけるとありがたいです。
なお LibreLogo のマニュアルは:

https://wiki.documentfoundation.org/User:Nemeth

にあります。

LibreLogo には「magic アイコン」というアイコンがありまして、これは、
-----
ペンを上げる
前進 10
ペンを下げる
前進 10
-----
みたいにやってアイコンをぽちっと押すと、
-----
PENUP
FORWARD 10
PENDOWN
FORWARD 10
-----
みたいに変換してくれる機能です。

個人的には、

・ユーザーの対象は10歳ぐらい
・英語はわからないけどローマ字ぐらいはわかる
  (パソコン使ってるってことはアルファベットには
    抵抗がない)
・なので「最初に覚えてしまえば」英語のコマンドを
  普通に使うんじゃないか
・けど、その「最初に覚える」ために magic アイコン
  対応はしたほうがいいんじゃないか

というポリシーです。

なお LibreLogo は magic アイコンで変換できる用語
を複数用意できるので:

FORWARD=すすむ|forward|fd

と書いたら、この三つのどれを書いても FORWARD に
変わってくれます (逆に |forward を書き忘れると、
forward って直接英語書いたときに認識してくれな
いという不具合が)。


まあそんなわけで、FORWARD ぐらいならいいのです
けど、制御構文でかなり苦しい訳をしています。
ので、そこらへんを見ていただければと。

1) 無理は止めて制御構文は英語にしたら?
2) いや、いっそのこと全部英語でいいんじゃ?
3) 日本語でもいいと思うけどもうちょっとマシな
   表現はないのん?

などご意見くだされば幸いです。


--------------------
(1) PICTURE

PICTURE は描画コマンド列をグルーピングする機能です。

PICTURE [ FORWARD 100 CIRCLE 100 ]

と書くと、「100 前進して 100 のサイズの円を書く」処理がグループ化
されます。かなり訳しにくかったので英語以外にふたつ用意しました。

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912313

図 [ すすむ 100 円 100 ]
図のグループ  [ すすむ 100 円 100 ]

でもどっちにしても:

PICTURE                    ; start a new line shape
FORWARD 10 PICTURE FORWARD 10   ; two line shapes

この例にはハマらないんだよなあ……(というか、この例の意味がよくわかんない)。


--------------------
(2) REPEAT

繰り返しの基本形です。引数を省略すると無限ループです。
内部でREPCOUNTという変数を参照できて、これが繰り返しの回数です。

REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ]
REPEAT [ POSITION ANY ] ; endless loop
REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912317

これはシンプルにしました。

くりかえす 10 [ すすむ 10 左 45 円 10 ]
くりかえす [ 場所 なんでも ]
くりかえす 100 [ すすむ くりかえした数 ]

--------------------
(3) FOR IN

ほかのプログラミング言語の foreach 的なやつです。

FOR i IN [1, 5, 7, 9, 11] [
  FORWARD i
  LEFT 90
]

文字列も OK です。

FOR i IN “text” [
  LABEL i
  FORWARD 10
]


これはかなり強引です。お知恵拝借したく。

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912322
https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912323

ひとつずつ i を次から取り出して [1, 5, 7, 9, 11] [
  すすむ i
  左 90
]


--------------------
(4) WHILE

WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ]  ; as REPEAT 10 [ ... ]


これもかなり無理矢理です(「次の間くりかえす」という候補もありました)。

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912321

くりかえすのは次の間 くりかえした数 <= 10 [ すすむ 50 左 36 ]


--------------------
(5) BREAK/CONTINUE

C の break/continue そのまんまです。

REPEAT [                   ; endless loop
  POSITION ANY
  IF REPCOUNT = 100 [ BREAK ]  ; equivalent of the REPEAT 100 [ ... ]
]

REPEAT 100 [
  POSITION ANY
  IF REPCOUNT % 2 <> 0 [ CONTINUE ]
  CIRCLE 10     ; draw circles on every 2nd positions
]

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912319
https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912320

くりかえす [
  場所 なんでも
  もし くりかえした数 = 100 [ くりかえしから出る]
]

くりかえす 100 [
  場所 なんでも
  もし くりかえした数 % 2 <> 0 [ はじめにもどる ]
  円 10
]

「はじめにもどる」は処理の先頭にもどりそうなのでなんとかしたいんですが、
どうせ記号だと割りきりました。

--------------------
(7) IF

なんか文法が Lisp っぽいのは気のせいです。

IF a < 10 [ PRINT “Small” ]
IF a < 10 [ PRINT “Small” ] [ PRINT “Big” ]

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912324

これはシンプルに。

もし a < 10 [ 表示 "小さい" ]
もし a < 10 [ 表示 "小さい" ] [ 表示 "大きい" ]


--------------------
(8) NOT, AND, OR

IF a < 10 AND NOT a < 5 [ PRINT “5, 6, 7, 8 or 9” ]

NOT がキツイ。
たぶんこれ多くの日本語プログラミングの取り組みで同じ悩みがあったと思います。
なぜなら NOT は前置ですが日本語の否定は後置だからです。
あと AND の略語も意外と悩みます。ちょっと気にいっていません。
「かつ」って言葉が硬いんでやわらかいことばをいれたいなとおもって「と」を選んだんですが、いまいち。
意外と「で」がいいんじゃないかと思うんですけど反映してません。


https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912330
https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912331
https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912332

もし a < 10 と 次が正しくない a < 5 [ 表示 “5, 6, 7, 8 または 9” ]


--------------------
(9) TO ... END

関数やサブルーチンを作ります。この一般語彙がパパート先生の意志を感じるけど、
正直つらい。

TO triangle
REPEAT [ FORWARD 100 RIGHT 120 ] FILL
END

REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912314
https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912315

そもそも「サブルーチン」をなんと呼ぶかなやんで、結局「動き」としました。
「処理」だとちょっと固いのが気に入らない。でも「動き」も気に入ってないです。
「おわり」がなんか一般用語すぎて気に入らないんですよね。


動きを作る triangle
くりかえし [ すすむ 100 右 120 ] 塗りつぶす
おわり

くりかえし 10 [ triangle ペンを上げる 場所 なんでも ペンを下ろす ]

いま思ったんですけど、こんなのもいいかも。反映はしてないです。

動きの名前 triangle
くりかえし [ すすむ 100 右 120 ] 塗りつぶす
できあがり


--------------------
(10) OUTPUT

return 文のうち、値を返す方。

TO randomletter
OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
END

https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912325

動きを作る randomletter
値を返す RANDOM “qwertzuiopasdfghjklyxcvbnm”
おわり


--------------------
(11) STOP

return 文のうち、値を返さない方。

TO example number
  IF number < 0 [ STOP ]
  PRINT SQRT number             ; print square root
]


https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po/translate/#unit=29912316

「動き」という言葉が変わったら、こっちも変えます。

動きを作る example number
  もし number < 0 [ 動きから出る ]
  表示 平方根 number             ; print square root
]


----------------------------------------------------

構造があるやつはこの程度のはずなので、残りは Pootle で確認お願いします。


https://translations.documentfoundation.org/ja/libo_ui/librelogo/source/pythonpath.po


よろしくお願いします。


[以上]
-- 
Naruhiko Ogasawara ([email protected])

-- 
Unsubscribe instructions: E-mail to [email protected]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

メールによる返信