translate – matoken's blog https://matoken.org/blog Is there no plan B? Fri, 07 Mar 2025 22:10:02 +0000 ja hourly 1 https://wordpress.org/?v=7.1.4 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg translate – matoken's blog https://matoken.org/blog 32 32 LibreWolfやFirefox Nightlyで日本語へもオフライン翻訳を利用 https://matoken.org/blog/2025/03/08/librewolf-firefox-nightly-offline-translate/ https://matoken.org/blog/2025/03/08/librewolf-firefox-nightly-offline-translate/#respond Fri, 07 Mar 2025 22:04:32 +0000 https://matoken.org/blog/?p=4452

最近のFirefoxにはオフライン翻訳機能があります.しかし,自分の使いたい日本語については日本語からの翻訳はありますが,日本語への翻訳はまだありません.
FirefoxからのフォークのLibreWolfでは日本語への翻訳が使えると見かけて試してみました.

Firefox 136には日本語への翻訳はない

firefox 136 translate

Post by @Coro@mstdn.maud.io
View on Mastodon

LibreWolfの導入

はじめAppImage版を試しましたが日本語への翻訳はありません.
よく見るとうまく行っている環境はArch LinuxでAURのlibrewolf-bin 135.0.1-1で,AppImage版は135.0-1と微妙にバージョンが違います.
AppImage版のリポジトリを見ると135.0.1-1はまだ無いようです.

Arch Linux環境だと確実そうですが,今手元にないのでFlatpak版を試すと日本語への翻訳が現れ,翻訳もうまく行きました :)

Note
初回はオフライン翻訳用の言語ファイルのダウンロードが行われ少し時間がかかります.
FlatpakでのLibreWolf導入と起動
$ sudo apt install flatpak
$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
$ flatpak install flathub io.gitlab.librewolf-community
$ flatpak run io.gitlab.librewolf-community

LireWolf 135.0.1 1 translate
LireWolf 135.0.1 1

Firefox Nightlyも試す

LibreWolfはMozilla Firefoxからのフォークです.stable(136)では対応していませんでしたがもう少し新しものであれば動くかもしれないと思い以下のページからFirefox Beta, Firefox Developer Edition, Firefox Nightlyを試してみました.

Firefox Nightly(138.0a1 (2025-03-04))で日本語へのオフライン翻訳に対応しているのを確認しました.
近いうちにStableにも降りてきそうですね.

他によく使うFirefoxベースのTor Browserはesrベースなのでしばらくは無理そうです.

firefox nightly

オフライン翻訳が機能しているか確認する

まずはLibreWolfやFirefox Nightlyで日本語のオフライン翻訳用の言語ファイルをダウンロードします.「設定」→「一般」→「翻訳」からもしくは適当なページを日本語に翻訳(右上のh「ハンバーガーメニュー」→「ページを翻訳」)すると初回に翻訳用言語ファイルがダウンロードされます.

次に英語の文章を用意します.ここではmanを書き出したものと,Project GutenbergからAlice’s Adventures in Wonderlandを用意しました.

$ LC_ALL=en_US.UTF-8 man firefox > firefox.txt
$ wget https://www.gutenberg.org/cache/epub/11/pg11.txt

ネットワークから切断します.今回はNetworkManager アプレットから回線を切断しました.

テキストファイルにアクセスするために適当なhttpdを起動します.

$ python -m http.server 8000 -d . -b localhost

今回の例では以下のURLでアクセスできます.

Firefoxのmanを書き出したfirefox.txtはいい感じに翻訳できました.

firefox.txtを翻訳した一部のスクリーンショット

2025 03 07 053616 3741659 selected

しかし,「Alice’s Adventures in Wonderland」の方は「このページは 英語 から 日本語に翻訳されています」となった状態になっても翻訳されていないように見えます.これはサイズの問題かもしれないと思い,「CHAPTER I.」部分だけを別ファイル(pg11-c1.txt)に書き出して試してみると翻訳できました.ただ一部翻訳されていない部分もあります.

各テキストファイルサイズ
$ ls -s --block-size=k *.txt
  4K firefox.txt   12K pg11-c1.txt  172K pg11.txt
「Alice’s Adventures in Wonderland CHAPTER I.」を翻訳した頭の部分

第1章
ダウン・ザ・ラビット・ホール

Alice was beginning to get very tired of sitting by her sister on the. アリスは妹の座に座るのにとても疲れ始めていた。
銀行、そして何もすることがないこと:一度か二度彼女は覗いた
妹が読んでいた本は、写真がなかったり
conversations in it, ‘and what is the use of a book,’t thought Alice. その中に会話、そして本の使い方とはアリスが言った。
「写真や会話がないの?」”

その他,スクロールしないと翻訳が現れないという動作も確認しました.

翻訳結果を保存したいと思った場合,ctrl+sで保存するとオリジナルの言語で保存されるのでテキストをコピーして保存する感じになりそうです.

このあたりのこなれてなさはBETAという感じがします.

その他の翻訳

自分はオフラインでの翻訳にはOSSなArgosTranslate/LibreTranslateを使っています.LibreTranslate用のFirefoxの拡張機能もあります.

プロプライエタリかつオンラインのGoogle翻訳,Yandex翻訳を使う場合はTWPを使っています.

まとめ

しばらく前にFirefoxに組み込まれたオフライン翻訳機能ですが,まだ日本語への翻訳がありませんでした.FirefoxフォークのLibreWolfやFirefox Nightlyにはこの日本語へのオフライン翻訳機能が入っていました.Stableに降りてくるのが楽しみです.
これまでオフライン翻訳にはArgos Translate,LibreTranslateを使っていましたが,Firefoxのオフライン翻訳機能はお手軽に使え,サイズも小さいのが良さそうです.Firefoxを起動しっぱなしでなくコマンドラインでテキストファイルを翻訳できたりすると便利そうとかも思いますがそれは役割が違う感じですかね.
ということで便利なのですが使い勝手や翻訳はもう一つかなという感じも.とはいえまだBETA機能なのでBETAが取れたらもっと良くなるのではないかと思います.

環境
$ flatpak list | grep LibreWolf
LibreWolf       io.gitlab.librewolf-community   135.0.1-1       stable  system
$ flatpak run  io.gitlab.librewolf-community --version
Mozilla Firefox 135.0.1-1
$ ./firefox --version
Mozilla Firefox 138.0a1
$ lsb_release -dr
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2025/03/08/librewolf-firefox-nightly-offline-translate/feed/ 0
LibreTranslate で自分用翻訳サーバ https://matoken.org/blog/2022/12/31/libretranslate-your-own-translation-server/ https://matoken.org/blog/2022/12/31/libretranslate-your-own-translation-server/#respond Sat, 31 Dec 2022 10:35:34 +0000 https://matoken.org/blog/?p=3791

ArgosTranslate でローカルで機械翻訳を試していい感じだったので,ArgosTranslate を使った翻訳ウェブサーナのLibreTanslate も試してみました.

pipでかんたんに導入できます.ここではvenvで環境を分けています.

$ python3 -m venv venv (1)
$ source venv/bin/activate (2)
$ pip install libretranslate (3)
$ du -Hs . (4)
3518928 .
$ libretranslate (5)
Updating language models
Found 58 models
Downloading Arabic → English (1.0) ...
Downloading Azerbaijani → English (1.5) ...
Downloading Catalan → English (1.7) ...
  :
^c
$ du -Hs ~/.local/share/argos-translate/ (6)
6137956 /home/matoken/.local/share/argos-translate/
$ libretranslate --frontend-language-source en --frontend-language-target ja (7)
Running on http://127.0.0.1:5000
  1. venv設定
  2. venv反映
  3. pipでLibreTranslateを導入
  4. 容量確認
  5. モデルデータが無い場合はダウンロードされる
  6. モデルデータの容量確認
  7. 翻訳元既定値をen, 翻訳先既定値をjaにして起動
Note

argostranslateも一緒に導入されます.

$ argos-translate -h
usage: argos-translate [-h] [--from-lang FROM_LANG] [--to-lang TO_LANG] [TEXT]

Open-source offline translation.

positional arguments:
  TEXT                  The text to translate. Read from standard input if missing.

options:
  -h, --help            show this help message and exit
  --from-lang FROM_LANG, -f FROM_LANG
                        The code for the language to translate from (ISO 639-1)
  --to-lang TO_LANG, -t TO_LANG
                        The code for the language to translate to (ISO 639-1)

ウェブブラウザで http://127.0.0.1:5000/ にアクセスします.左側のテキストエリアに翻訳したい文字列を入力すると入力されるたびに翻訳され右側にテキストエリアに結果が表示されます.

libretranslate00

curl経由でも実行してみます.

$ curl -X POST --silent --show-error -F "q=hello world." -F "source=en" -F "target=ja" http://127.0.0.1:5000/translate | jq .
{
  "translatedText": "こんにちは世界。."
}
Tip

ウェブインターフェイスで一部の言語しか選べなかったり,

Cannot translate text: 400 Bad Request: English (en) is not available as a target language from Japanese (ja)

のようなエラーとなった.

初回起動時にダウンロードする言語モデルが壊れていたためのようで一旦削除してダウンロードし直すことで動作するようになった.(ダウンロード中にNotePCをサスペンドしてしまったせいだと思う……)

$ rm -r ~/.local/share/argos-translate
$ libretranslate
Updating language models
Found 58 models
Downloading Arabic → English (1.0) ...
Downloading Azerbaijani → English (1.5) ...
  :
環境
$ dpkg-query -W python3 python3-pip
python3 3.10.6-3+b1
python3-pip     22.3.1+dfsg-1
e$ lsb_release -a
Distributor ID: Debian
Description:    Debian GNU/Linux bookworm/sid
Release:        n/a
Codename:       bookworm
$ arch
x86_64
]]>
https://matoken.org/blog/2022/12/31/libretranslate-your-own-translation-server/feed/ 0
Argos Translate でオフライン機械翻訳 https://matoken.org/blog/2022/12/22/offline-machine-translation-with-argos-translate/ https://matoken.org/blog/2022/12/22/offline-machine-translation-with-argos-translate/#comments Thu, 22 Dec 2022 11:23:52 +0000 https://matoken.org/blog/?p=3787

OSSの機械翻訳ソフトウェアのArgos Translate というものがあります.なんとなく重そうだなと思って触ったことがなかったのですが,Argos Translate ベースのLibre Translate がRaspberry Pi 4 でも動くということで,それなら手元のマシンでも大丈夫だろうと試してみました.

導入
$ mkdir ./argostranslate
$ cd ./argostranslate/
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install argostranslate
$ du -Hs .
3449892 .

venv で環境切ってpip で導入しました.

argospm コマンドで翻訳モデルデータ入手
$ argospm --help
usage: argospm [-h] {update,search,install,list,remove} ...

positional arguments:
  {update,search,install,list,remove}
                        Available commands.
    update              Downloads remote package index.
    search              Search package from remote index.
    install             Install package.
    list                List installed packages.
    remove              Remove installed package.

options:
  -h, --help            show this help message and exit
$ argospm update (1)
$ argospm search | wc -l (2)
58
$ argospm search --to-lang ja (3)
translate-en_ja: en -> ja
$ argospm search --from-lang ja (4)
translate-ja_en: ja -> en
$ argospm install translate-en_ja (5)
$ argospm install translate-ja_en (6)
$ du -Hs ~/.local/share/argos-translate/packages/*ja* (7)
131380  /home/matoken/.local/share/argos-translate/packages/en_ja
131780  /home/matoken/.local/share/argos-translate/packages/ja_en
  1. インデックスを更新
  2. リモートのモデル数を確認
  3. 日本語への変換モデルを確認
  4. 日本語からの変換モデルを確認
  5. 英語→日本語のモデルをインストール
  6. 日本語→英語のモデルをインストール
  7. モデルの容量確認
Note
日本語は英語とのモデルしかありませんが,例えばフランス語→日本語の変換をしたい場合にfr→enの言語モデルもある場合Argos Translateは自動的に中間言語を介して仏→英→日のように翻訳してくれるそうです.ただし精度は落ちます.
Note
後述のGUI版でもモデルデータ入手可能です.
Pythonで試す
$ cat ./sample.py
import argostranslate.package
import argostranslate.translate

from_code = "en"
to_code = "ja"

translatedText = argostranslate.translate.translate("hello world.", from_code, to_code)
print(translatedText)
$ python3 ./sample.py
こんにちは世界。
コマンドラインで試す
$ argos-translate --help
usage: argos-translate [-h] [--from-lang FROM_LANG] [--to-lang TO_LANG] [TEXT]

Open-source offline translation.

positional arguments:
  TEXT                  The text to translate. Read from standard input if missing.

options:
  -h, --help            show this help message and exit
  --from-lang FROM_LANG, -f FROM_LANG
                        The code for the language to translate from (ISO 639-1)
  --to-lang TO_LANG, -t TO_LANG
                        The code for the language to translate to (ISO 639-1)
$ time argos-translate --from-lang en --to-lang ja 'hello world.' (1)
こんにちは世界。

real    0m2.124s
user    0m1.731s
sys     0m0.484s
$ echo 'cat is awesome.' | argos-translate --from-lang en --to-lang ja (2)
猫は素晴らしいです。
$ LC_ALL=en_US.UTF-8 man man | wc
    478    4698   33208
$ time LC_ALL=en_US.UTF-8 man man | argos-translate --from-lang en --to-lang ja (3)
    :
    :

real    2m56.132s
user    4m48.187s
sys     0m57.290s
  1. 英語から日本語に翻訳
  2. 標準入力を翻訳
  3. コマンドの結果を翻訳
Note

translate shell などと違いローカルで実行できるのがいい感じだがマシンスペックにより低速.

GUI
$ pip install argostranslategui
$ argos-translate-gui
翻訳画面

argos translate gui01

モデルの確認,削除

argos translate gui02

モデルのインストール

argos translate gui03

Note

画面サイズを広げることでテキストエリアも広がり長文にも対応しやすく.

少し試したところ短文ならサクサクと動きますが,man の結果をまとめて渡すなどするとしばらく待つことに.人間の読む速度よりは速いので分けて渡すようにすると良さそうです.(若しくは対応GPUを追加するなどマシンスペックを上げる.)
翻訳精度も思っていたより良い感じで,Google翻訳以前の翻訳ソフトウェアよりずっと良さそうです.

無料翻訳サイトは翻訳データが保存,利用されることが多いのでセンシティブなものには使えないのですが,Argos Translate ならローカルで完結するのでそのようなデータの翻訳にも良さそうです.

Note

鹿児島Linux勉強会 2022.12 で紹介しました.

環境
$ dpkg-query -W python3
python3 3.10.6-1
$ lsb_release -dr
Description:    Debian GNU/Linux bookworm/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2022/12/22/offline-machine-translation-with-argos-translate/feed/ 1