PR

macOS Montereyからコマンドリファレンス(man)はWeb翻訳で日本語化しています、その手順

macOSに標準でインストールされているmanコマンドを利用すると内蔵されたコマンドの使い方がわかります。標準コマンド群のマニュアルは英語で表示されます。日本語されたものはありません。

コマンド自体はLinux系とかぶるものが多いです。JM Projectを利用すると日本語マニュアルが充実しているので大体のことはわかります。macOSのコマンド群はapple特有のコマンドだったり、apple独自の拡張が行われていることもあります。そのためLinux系のマニュアルを見ても全てがわからないという課題があります。

macOS Montereyからオンライン・オフラインどちらでも翻訳機能が使えるようになりました(オフラインで利用するためには言語と地域→翻訳言語・・・からオンデバイスモードを設定する必要があります)。

ターミナルでエリア選択→右クリック→翻訳という動作ができればよかったのですが、翻訳メニューはありませんでした。Safariならできます。
macOS Monterey/Big Sur SafariはGoogle Chromeの「このページを翻訳する」機能と同じようなことができます。
MacのSafariでWebページを翻訳する
=>コマンドラインのmanの結果をhtml化、ブラウザで表示させることで翻訳可能ってことですね。

AppleやGoogleのWebページ自動翻訳機能の制限は?1日何ページやっていいの?

Appleの制限事項は見つかりませんでした。Googleは5000文字までの制限があります。1日何回やっても大丈夫そうです(2022年2月2日時点)。ご利用は良識の範囲を心がけるのが良いかと思います。

AppleのWebページ翻訳機能の制限は?見当たりません。

制限を明記したドキュメントは見つかりませんでした。
翻訳可能な言語は12ヶ国語[ アラビア語、北京語(中国本土)、英語(英国)、英語(米国)、フランス語(フランス)、ドイツ語(ドイツ)、イタリア語(イタリア)、日本語、韓国語、ポルトガル語(ブラジル)、ロシア語、スペイン語(スペイン)]でした。

GoogleのWebページ翻訳機能の制限は?1回あたり5,000文字まで

文字数の多いテキストを翻訳する
5,000 文字まで翻訳できます。5,000 文字より長いテキストを翻訳するには・・・
単語や語句を入力して翻訳する

翻訳可能な言語は100以上あります。

macOS Montereyでmanをhtmlに変換し、Safari、Chromeに表示させ翻訳(日本語化)する手順

ターミナルでman lsと打ち込むとlsのマニュアルが表示され、qと入力すると表示を終了させることができます。
これと同じようにhtmlman lsと打ち込むとlsのマニュアルをHTML化(一時ファイル)し、SafariまたはChromeで表示、かつターミナル上でもマニュアルを表示し、qと入力すると一時ファイルを削除するようにしています。

htmlmanはshellスクリプトで実現しています。

safariバージョンとGoogle Chromeバージョン2種類用意しました。ブラウザ指定は埋め込んでいるのでどちらかを選んでhtmlmanファイルを作成してください。

  • safariでマニュアルを開くパターン:htmlman
    #!/bin/zsh
    SEARCH=$1
    FILES=(`man -aW $1|xargs`)
    if [ $#FILES = 0 ] ; then 
      exit 1
    elif [ ! -e $FILES[1] ]; then
      exit 2
    else
      TMPFILE=`mktemp $TMPDIR$(uuidgen).html` || exit 3
      groff -mandoc -Thtml $FILES[1] > $TMPFILE
      open -a safari $TMPFILE
      man $SEARCH
      rm $TMPFILE
    fi
  • Google Chromeでマニュアルを開くパターン:htmlman
    #!/bin/zsh
    SEARCH=$1
    FILES=(`man -aW $1|xargs`)
    if [ $#FILES = 0 ] ; then 
      exit 1
    elif [ ! -e $FILES[1] ]; then
      exit 2
    else
      TMPFILE=`mktemp $TMPDIR$(uuidgen).html` || exit 3
      groff -mandoc -Thtml $FILES[1] > $TMPFILE
      open -a "Google Chrome" $TMPFILE
      man $SEARCH
      rm $TMPFILE
    fi

ソースの内容説明

  • 1行目:zshで実行する宣言です。このソースはzsh向けの配列操作を使っています。そのためbashでは正常動作しません。
  • 2行目:1番目の引数[htmlman lsの場合、ls]をSEARCH変数に記憶しています。
  • 3行目:lsに該当するマニュアルのフルパスを取得しています。複数見つかる場合もあるため、配列に格納しています。
  • 4、5行目:配列に登録された数が0件なら終了します。
  • 6、7行目:フルパスで取得したマニュアルファイルが存在しなければ終了します。
  • 9行目:テンポラリファイルを作成します。作成できない場合終了します。
  • 10行目:groffコマンドでnroff形式のマニュアルファイルをhtml形式に変換します。テンポラリファイルへ出力します。
  • 11行目:ブラウザでテンポラリファイルを開きます。
  • 12行目:manコマンドの通常出力を表示します。PAGERはless(標準)を使っていることを想定しています。
  • 13行目:manコマンドの終了(q)でテンポラリファイルを削除します。

シェルスクリプトのファイル名は、htmlmanとしています。実行権限を与え、パスが通っている場所(ex./usr/local/bin/等)に配置します。
実行権限を与える

chmod +x htmlman

パスの確認

printenv PATH

配置する(例)

mv ./htmlman /usr/local/bin/.

mac野郎なのかはGoogle Chromeバージョンを利用しています。配置先は~/local/bin/htmlmanです。

ご利用の際の注意点 htmlman

  1. 引数は1つしか想定していません。セクション指定などには対応していません。

使い方はとてもシンプル「htmlman name」です

htmlmanはブラウザーで表示させたいコマンド名を指定します。

  1. 例えばlsの場合、以下のように指定します。
    htmlman ls
  2. 作成されたHTML形式のテンポラリファイル(file:///private/var/folders/jc/ttnqw4f53875_4j8b4yjgwd40000gn/T/D1B45ADB-52F7-4072-801A-0A001334EE20.html)がChromeで表示され、日本語に翻訳されています。(mac野郎なのかのChromeは自動的に翻訳されるように設定?されています)。
    mac-man-html-translation-ja.jpg
  3. ターミナルはmacOS標準のマニュアルが表示されています。
    mac-man-htmlman.jpg

    キーボードでqを入力することで終了します。ブラウザはそのまま残ります。ただ元ファイルは終了と共に消えているのでブラウザの更新ボタン等で情報の更新を行うと「ファイルにアクセスできませんでした移動、編集、削除された可能性があります。ERR_FILE_NOT_FOUND」という結果になります。

まとめ:使用頻度はそれほど高くないです。一括で翻訳できるようになって楽になりました。

リアルタイムで翻訳できるって楽ですね。Apple、Googleで無料で翻訳できる機能を使わせてもらっているおかげです。無料には対価(おそらくアクセス情報や翻訳前の文章、翻訳後の文章、URLなど)があります。

最近空き容量不足に悩み始めたmacに翻訳用の言語をインストールしたり、翻訳済みmanをインストールするなどのことはできれば避けたかったのでリアルタイム翻訳方式にしています。

内蔵SSDに余裕がある方は、翻訳言語をインストールしてオフライン翻訳することで情報を配布しないで済むかと思います。

日本語に翻訳したmanを見たいシーンはそれほど多くないかもしれません。このhtmlmanでコピペしなくても一括で日本語に翻訳できるようになり、楽になりました。

タイトルとURLをコピーしました