アプリまたはサイト全体を Google 翻訳で実行して、別の言語で基本的な翻訳を取得できないのはなぜですか?
今、できます!
hokeylizationという名前はかばん語で、「ホーキー ローカリゼーション」を意味します。
非常に単純なので、ややばかげています。文字列を Google 翻訳に送信します。
シンプルでありながら非常に強力です。 HTMLドキュメントを特別にサポートしています。 HandlebarsJS テンプレート、 Markdown ファイル。
あなたは翻訳することができます:
- メッセージを含む JavaScript オブジェクト
- 任意の数のファイルまたはディレクトリ。常にディレクトリを再帰的にトラバースします。
この README.md ドキュメントは、フック化ツール自体を使用して、 Google 翻訳でサポートされているすべての言語!
完璧ではないことは確かですが、何もないよりはましだと思います!
🇸🇦 アラビア語 🇧🇩ベンガル語 🇩🇪 ドイツ語 🇺🇸 英語 🇪🇸 スペイン語 🇫🇷フランス語 🇹🇩ハウサ 🇮🇳 ヒンディー語 🇮🇩 インドネシア語 🇮🇹 イタリア語 🇯🇵 日本語 🇰🇷韓国語 🇮🇳 マランティ語 🇵🇱 ポーランド語 🇧🇷ポルトガル語 🇷🇺 ロシア語 🇰🇪 スワヒリ語 🇵🇭 タガログ語 🇹🇷トルコ語 🇵🇰 ウルドゥー語 🇻🇳 ベトナム語 🇨🇳 中国語
元の README の特定の翻訳 欠陥がある可能性があります -- 修正は大歓迎です! GitHub のプル リクエスト を送信してください。 または、それが苦手な場合は、問題を開く
翻訳に関する新しい GitHub の問題を作成する場合は、次のことを行ってください。
- ページの URL を含めます (ブラウザのアドレス バーからコピー/貼り付け)
- 間違っている正確なテキストを含めます (ブラウザからコピー/貼り付け)
- 何が間違っているのか説明してください -- 翻訳は間違っていますか?どういうわけかフォーマットが壊れていますか?
- より良い翻訳の提案、またはテキストを適切にフォーマットする方法を親切に提供してください
- ありがとうございました!
# コンテンツ
- ソース
- 支援と資金提供
- インストール
- セットアップ
- JavaScript 文字列リソース ファイルの翻訳
- [テキスト ファイルのディレクトリの翻訳](#テキスト ファイルのディレクトリの翻訳)
- その他のオプション
- [JSON バッチ コマンド](#JSON-バッチ コマンド)
## ソース
私はプロのオープン ソース ソフトウェア開発者になろうとしています。私はで働いています 長年ソフトウェア業界に携わってきた私は、成功した会社を立ち上げ、上場企業に売却してきました。 最近、仕事を失い、他に仕事が決まっているわけではありません
だから私は役立つソフトウェアを書いてみて、それがうまくいくかどうかを見ていきます
このソフトウェアをお楽しみいただけましたら、 最小 Patreon による月間貢献
ありがとうございました!
コマンド ライン ツールを使用するには、 npmまたはyarnを使用してインストールします。
npm install -g hokeylization
yarn global add hokeylization
ライブラリとして使用するには、はるかに小さいliteバージョンをインストールします。
npm install -g hokeylization-lite
yarn global add hokeylization-lite
次に、 hokeyコマンドのヘルプを見てください。
hokey --help
hokey -h
あなたの言語または別の言語で出力を見たいですか?
hokeyは、シェルの環境変数から自動的に言語を検出しようとします
LC_ALL環境変数を設定することにより、言語を強制することができます:
LC_ALL=it hokey --help
hokeylization-liteをインストールした場合、コマンド ヘルプは英語でのみ利用可能であることに注意してください
## 設定
GOOGLE_TRANSLATE_PROJECT_ID環境変数を設定して、Google 翻訳プロジェクトを識別します
GOOGLE_APPLICATION_CREDENTIALS環境変数を、ダウンロードした JSON 認証情報に設定します
Googleクラウドで認証がどのように機能するかを理解した後(楽しいかもしれません)
ソースコードから実行している場合は、これらをソースの.envファイルに入れることもできます
dotenv 経由で実行時に読み込まれるディレクトリ
文字列テーブルは、次の 2 つの形式のいずれかで JavaScript ファイルにある必要があります:
ES6 エクスポート:
export default {
string_key: "some value",
another_key: "another value",
... more keys ...
}
CommonJS エクスポート
module.exports = {
string_key: "some value",
another_key: "another value",
... more keys ...
}
このファイルがmyfile.en.jsという名前の場合、次のようにスペイン語とドイツ語に翻訳できます。
hokey -l es,de -o myfile.LANG.js myfile.en.js
上記のLANGは特殊です -- これはこのツールの予約語です!
LANGは、出力ファイルの言語コードに置き換えられます
したがって、上記のコマンドはファイルを作成します。
myfile.es.js
myfile.de.js
-l / --languagesオプションは、ISO 言語コードのコンマ区切りリストです
Google 翻訳でサポート
出力ファイルが既に存在する場合は、どのキーが既に存在するかを判断するために調べられます。 既存のキーは変換されません。不足しているキーの翻訳が生成され、追加されます JS オブジェクトの最後まで。ファイル全体が常に書き換えられます。
すべてのキーを強制的に再変換するには、 -f / --forceオプションを使用します
ファイルのディレクトリを翻訳することもできます。 hokeylization は再帰的に訪問します ディレクトリ内のファイルを開き、その内容を Google 翻訳で実行し、出力を保存します。 別のディレクトリ ツリー内の同じ名前のファイルに
翻訳の対象がディレクトリの場合、このモードが有効になります
-o / --outfileオプションは、出力ディレクトリを指定します
重大な警告: ディレクトリを変換するときは、出力ディレクトリを指定しないでください それはあなたの入力ディレクトリ内にあります!これを行うと、次のようになります。
- 無限再帰を誘発する
- Google の請求書を作成する *ディスクをいっぱいにしてください
- 楽しみが減る
してはいけないことの例を次に示します。
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
これが実行されると、翻訳されたファイルがtemplates/esに書き込まれるため、新しいファイルになります
templates/の下にあるため、翻訳するソース ファイル -- このプロセスは続きます
永遠に、それをしないでください!
OK、ディレクトリにいくつかの電子メールテンプレートがあるとしましょう:
templates/email/en/welcome.txt
templates/email/en/welcome.html
templates/email/en/verify-account.txt
templates/email/en/verify-account.html
templates/email/en/reset-password.txt
templates/email/en/reset-password.html
これらすべてをスペイン語とドイツ語に翻訳するには、次を実行します。
hokey -l es,de -o templates/email/LANG templates/email/en
上記のLANGは予約語であり、ISO 言語コードに置き換えられます
上記を実行するとどうなりますか:
templates/email/esおよびtemplates/email/deディレクトリが作成されます (存在しない場合)。templates/email/en内のすべてのファイルは、スペイン語とドイツ語に翻訳されます-f/--forceを使用しない限り、既存の出力ファイルは再生成されませんesとde内のディレクトリ構造とファイルは、en`の下と同じになります。
## その他のオプション
-n / --dry-runを渡して何が行われるかを表示しますが、実際には API 呼び出しを行ったりファイルを書き込んだりしません
### 力
-f / --forceを渡して、翻訳が既に存在する場合でも、常に翻訳を再生成します
### マッチ
-m / --matchを渡して、ディレクトリ モードでの実行時に処理されるファイルを制限します
ソース ディレクトリ内のすべてのファイルを常にターゲット ディレクトリに変換する必要があるとは限りません。
-m / --matchオプションの値は、指定する正規表現です (シェルの引用規則に注意してください!)。
どのファイルを翻訳する必要があるか
不明な場合は、このオプションを-n / --dry-runと組み合わせて、どのファイルが変換されるかを確認できます
-mが一致するファイルが多すぎる場合があります。 -e / --excludesオプションを使用して明示的に除外します
そうでなければ一致したはずのファイル
複数の正規表現をスペースで区切ってリストできます
一般的な使用法は次のとおりです: --excludes node_modules dist \.git build tmp
翻訳する文字列には、2 つまたは 3 つの中かっこを含む{{ handlebars }}テンプレートが含まれる場合があります
おそらく、これらのテンプレート内のものを翻訳したくないでしょう*
-H / --handlebarsフラグを渡すと、 {{ ... }}内のものは翻訳されません
Markdown はテキストでも html でもありません。
-M / --markdownフラグは、マークダウン ファイルの特別な処理を有効にします
マークダウン ファイルで-Mフラグを使用しない場合、おそらく次の問題が発生します。
- リンク切れ。翻訳では、マークダウンリンクの記述が終わった後にスペース文字が表示されます(
]で)が、 ターゲット リンクが始まる前 ((を使用)。これにより、マークダウンが正しくレンダリングされず、リンクが ドキュメントを表示すると壊れています。 - コード ブロックが翻訳されます。 Google翻訳は、マークダウンがコードと見なすものとそうでないものを認識していません
- インデントされたコード ブロックの間隔が正しくありません。翻訳でスペースを維持するのは難しい
- ほとんどの場合、リテラル値にしたい場合、
backticks内のものは変換されます
-M / --markdownフラグが有効な場合:
- パターン
](は](](`に凝縮されるため、壊れたマークダウン リンクが修正されます - インデントされたコード ブロックの周りに「翻訳なし」ラッパーが配置され、適切なインデントが維持され、翻訳されないようになります。
- 「翻訳なし」ラッパーが
backticks内のテキストの周りに配置され、翻訳されないようにします
通常はすべてプレーンテキストとして処理されます
コンテンツが HTML の場合、 -p html html/--process-as html`オプションを渡さない限り、内容が壊れてしまいます
### フィルター
冒険者向け: ディレクトリ内のファイルを処理する場合、 -F / --filterオプションを渡すことができます
ファイルシステムに書き込まれる前に出力をフィルタリングする
このオプションの値は、 filterという名前の関数をエクスポートする JS ファイルへのパスでなければなりません
filter関数はasync async でなければなりませんawait`が呼び出されるからです。
ファイルがディスクに書き込まれる前に、ファイルの内容全体が文字列としてfilter関数に渡されます
filter関数からの戻り値は、実際にストレージに書き込まれるものです
したがって、最終的に何が書き込まれるかを完全に制御できます
filterスクリプトは次の場所で検索されます ( .jsがフィルタに追加されます)
名前、すでに.jsで終わっていない限り)
- 現在のディレクトリ
- 現在のディレクトリ内の
.hokey-filtersという名前のディレクトリ ${HOME}/.hokey-filtersという名前のディレクトリ。ここで、${HOME}は現在のユーザーのホーム ディレクトリです。- 組み込みの filters ディレクトリ
filter文字列は複数の単語にすることができます。この場合、最初の単語はフィルター名です。
残りの単語は引数としてfilter関数に渡されます
### ヘルプ
ヘルプを表示するには、 -h / --help help」を使用します
-j / --jsonオプションを使用すると、複数の調整されhokeyコマンドを実行できます
慣例により、このファイルはhokey.jsonと呼ばれますが、好きな名前を付けることができます
-jオプションとしてディレクトリを渡すと、 hokey.jsonはそのディレクトリでhokeyを探します。
JSON ファイルには 1 つのオブジェクトが含まれている必要があります。そのオブジェクト内では、そのプロパティ名は
コマンドライン オプションと、 hokeyという名前の 1 つの追加プロパティ
hokeyプロパティは、実行するコマンドの配列です。これらのコマンド内で宣言されたプロパティは、
外側のオブジェクトで重複する宣言をオーバーライドします。
hokey配列の各オブジェクト内で、 name name` と入力ファイルと出力ファイルを指定する必要があります
これはhokey.jsonの例です
{
"inputLanguage": "en",
"languages": "es,fr,ja", # can also be an array of strings
"force": false,
"match": null,
"processAs": null,
"excludes": ["exclude-1", "exclude-2"],
"handlebars": false,
"markdown": false,
"regular": false,
"dryRun": false,
"filter": "theFilter.js",
"hokey": [
{
"name": "locale names",
"infile": "messages/locales_en.js",
"outfile": "messages/locales_LANG.js",
"handlebars": true
},
{
"name": "CLI messages",
"infile": "messages/en_messages.js",
"outfile": "messages/LANG_messages.js",
"handlebars": true
},
{
"name": "README",
"infile": "README.md",
"outfile": "lang/LANG/",
"excludes": ["lang/", "node_modules/", "\\.git/", "tmp/"],
"filter": "relativizeMarkdownLinks lang",
"markdown": true,
"index": "lang/README.md"
}
]
}
次の例のように、単一のパスinfile infilesとして渡します。
{
... [
{
"name": "my docs",
"infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
"outfile": "docs/LANG/",
"markdown": true
]
}
多くの言語に翻訳する場合、 hokeyは、行われたすべての翻訳をリストするインデックス ファイルを作成できます。
それらへのリンクを提供します
インデックスを生成する場合、入力ソースは 1 つしか持てません
-I / --indexオプションを渡します。値は、インデックス ファイルが生成される場所です。
またはディレクトリ。ディレクトリの場合、テンプレートに基づいてデフォルトのファイル名が使用されます (以下を参照)。
-A / --index-templateを使用して、インデックス出力のフォーマット方法を決定します。 「html」を指定できます。
「markdown」、「text」、または独自の HandlebarsJS テンプレートへのファイル パス
独自のテンプレートを指定する場合は、 -I / --indexに (ディレクトリではなく) ファイルも指定する必要があります
オプション