n8nの画面を日本語にできるのか、日本語のデータを流すとどこで詰まるのかを1本にまとめました。結論は、2026年10月時点の安定版2.44.7に日本語の画面はなく、英語のまま使うのが一番早いです。日本語のデータで詰まるのはCSVの文字コード、全角半角、時差、メールの送信者名、正規表現といった決まった場所だけで、どれも直せます。例は「問い合わせ受付」ワークフロー(フォーム→Googleスプレッドシート「問い合わせ一覧」→Slackの #問い合わせ)で、作り方そのものは「n8nの使い方入門:最初のワークフローを作って動かす」にあります。
この記事の内容
先に決めること
画面は英語のまま使う
公式の日本語訳がなく、設定で切り替える方法もないので、日本語化の方法を探すより英語に慣れたほうが早く終わります。毎日出てくる単語は限られています。このコラムも画面の文言は英語の表示そのままで書いています。
時刻の基準を日本時間にする
n8nの時刻は、インスタンス全体、ワークフローごと、コンテナのOSの3か所で決まります。何もしないとアメリカ東部時間(America/New_York)で動きます。最初にインスタンス全体を Asia/Tokyo にし、ワークフローごとの設定は空のままにしておくのが、運用していて一番混乱しない形です。
外とやり取りする文字コードはUTF-8に揃える
n8nの中は全部UTF-8です。Shift_JISが出てくるのは古い基幹システムや会計ソフトのCSVくらいなので、入口でUTF-8に直し、出口で要るときだけ戻すと決めておけば、途中で文字コードを気にせずに済みます。
表記ゆれは入口で1回だけ直す
全角半角や空白のゆれをノードごとに直すと、直し漏れが必ず出ます。きっかけの直後に整えるノードを1つ置き、以降はそこから値を取ります。
画面の言語の今(2.44.7)
n8n 2.44.7 に同梱の、画面の文言を持つ @n8n/i18n(2.44.x)には、英語の en.json が1つあるだけです(文言はおよそ9,600件)。GitHubの packages/frontend/@n8n/i18n/src/locales も、2026年10月26日時点で en.json とそのテスト用のファイルだけです。公式ドキュメント docs.n8n.io も英語だけです。
N8N_DEFAULT_LOCALE は何をするか
N8N_DEFAULT_LOCALE は画面の言語を決める環境変数です。初期値は en で、de のような2文字の言語コードを入れます。de-AT のような地域付きの書き方は使えません。英語以外を指定すると、その言語の訳を探して表示し、訳が無い文言は英語に戻ります。
つまり N8N_DEFAULT_LOCALE=ja を入れても、日本語の訳がどこにも無いので見た目は変わりません。2.44.7の中身では、英語以外のときに増える動きはノードとCredentialの訳のファイルを読みに行くことだけで、そのファイルも同梱されていません。
訳は、ボタンやメニューの文言(言語ごとに1ファイル)と、ノード・Credentialの設定項目(ノードごとに1ファイル)の2段に分かれます。訳を足す手順の説明は、ソースコードから自分でビルドして起動する前提で書かれています。
日本語の訳が入らない理由
有志が日本語の訳を作り、公式に取り込むよう提案したことはあります。2025年10月に出た日本語の訳の提案(GitHubのPull Request #21208)は、取り込まれないまま2026年8月に閉じられました。2025年1月の中国語の提案(#12457)では、n8nの担当者が「今は編集画面の翻訳を受け付けていない」と書いて閉じています。この方針のままなら、公式の日本語の画面が近いうちに出る見込みは薄いです。
Cloudとセルフホストの違い
| 項目 | n8n Cloud | セルフホスト |
|---|---|---|
| 画面の言語 | 英語のみ | 英語のみ |
N8N_DEFAULT_LOCALE | 設定する場所がない | 設定できるが、訳が無いので変わらない |
| 個人設定(Personal settings) | 名前・パスワード・2段階認証・Theme(配色)。言語の項目はない | 同じ |
| 自分で訳を当てる | できない | ソースから自分でビルドすればできる |
| タイムゾーン | Cloudの管理画面「Instance settings」の「Runtime」 | 環境変数 GENERIC_TIMEZONE と TZ |

自分で訳を当てるのはやめておく
セルフホストなら、en.json を写した ja.json に訳を書いてビルドすれば日本語の画面は作れます。ただし文言は約9,600件あり、n8nは月に何度も版が上がって文言が変わります。毎回自分でビルドし直すことになり、脆弱性の修正が出てもすぐには上げられません。公式以外が配る、訳を当てた版も同じ理由で本番には向きません。版の上げ方は「n8nを止めずに運用する:アップデート・バックアップ・エラー通知・脆弱性」にまとめています。
英語の画面のまま迷わないための対応表
運用で毎日目にする英語はこの程度です(2.44.7の画面)。
| 画面の英語 | 出てくる場所 | 意味 |
|---|---|---|
| Overview | 左のメニュー | 全ワークフロー・Credential・実行の一覧 |
| Personal | 左のメニュー | 自分専用の置き場 |
| Create workflow | Overviewの右上 | ワークフローを新しく作る |
| Add first step… | 空のキャンバスの中央 | 最初のノード(きっかけ)を置く |
| Search nodes… | ノードパネルの上 | ノードを名前で探す |
| On a schedule | きっかけの一覧 | 決まった時刻に動かす(Schedule Trigger) |
| On form submission | きっかけの一覧 | フォームが送信されたら動かす(n8n Form Trigger) |
| Execute step | ノードの詳細画面の上 | このノードだけ動かす |
| Execute workflow | キャンバスの下 | 全体をテストで動かす |
| Publish / Unpublish | キャンバスの右上 | 本番に出す / 本番を止める |
| Create new credential | ノードの認証情報の欄 | 認証情報を新しく作る |
| Executions | キャンバス上部のタブ | 実行の記録 |
| Success / Error / Running / Waiting | 実行一覧 | 成功 / 失敗 / 実行中 / 待機中 |
| Retry execution | 失敗した実行の詳細 | やり直す |
| Debug in editor / Copy to editor | 実行の詳細 | その実行のデータを編集画面に読み込む |
| Fixed / Expression | 設定欄の上 | 固定値 / 式 |
| Schema / Table / JSON | INPUT・OUTPUTの上 | データの見え方の切り替え |
| Pin data / Unpin | OUTPUTの右上 | テスト用にデータを固定する / 外す |
| No output data returned | OUTPUT | 動いたが出力が0件 |
| Add option | 設定欄の下 | 追加の設定を足す |
| Settings | ノードの詳細画面のタブ | ノードの動き方の設定 |
| Always Output Data | ノードのSettings | 出力が0件でも空のitemを1件出す |
| Execute Once | ノードのSettings | 最初の1件だけで1回動く |
| Retry On Fail | ノードのSettings | 失敗したら間を空けてやり直す |
| On Error | ノードのSettings | 失敗したときに止めるか続けるか |
| Timezone | ワークフローのSettings | このワークフローだけのタイムゾーン |
| Error Workflow (to notify when this one errors) | ワークフローのSettings | 失敗したときに動かす別のワークフロー |
| Test URL / Production URL | WebhookやForm Trigger | テスト用のURL / 本番用のURL |
| Duplicate / Download | ワークフローの三点メニュー | 複製 / JSONで保存 |
| Data tables / Variables | Overviewのタブ | n8nの中の表 / 共通で使う値 |
詰まるのはボタンより英語のエラー文です。下の5つは相手のサービスの応答に応じて出る決まり文句で、括弧はHTTPの状態コードです。
| エラー文 | 意味 | 見るところ |
|---|---|---|
| Problem running workflow | ワークフローを動かせなかった | 下に続く理由の文 |
| No output data returned | ノードは動いたが出力が0件で、後ろが動かない | 条件の書き方。0件でも進めたいなら「Always Output Data」 |
| The node ‘…’ doesn’t exist, but it’s used in an expression here. | 式で名指ししたノードが無い | ノード名を変えていないか |
| No path back to node | 式で指したノードが今のノードの前につながっていない | つなぎ方。別の枝なら .first() などで取る |
| Bad request – please check your parameters | 送った値が相手の形式に合わない(400) | 必須の欄・値の形 |
| Authorization failed – please check your credentials | 認証に失敗した(401) | キーの期限切れ・貼り間違い |
| Forbidden – perhaps check your credentials? | 相手に拒否された(403) | 権限・スコープ・共有の設定 |
| The resource you are requesting could not be found | 対象が見つからない(404) | ID・URLの誤り、削除されていないか |
| The service is receiving too many requests from you | 呼びすぎ(429) | 間隔を空ける、「Retry On Fail」 |

日本語のデータで詰まるところ
文字化け:CSVのShift_JISとBOM
CSVを読むのは「Extract from File」ノードの「Extract From CSV」です。2.44.7でこの操作が選べる文字コードは、ASCII・Latin1・UCS-2・UTF-8・UTF16LEなど欧文向けだけで、Shift_JISはありません。Shift_JISのCSVをそのまま読ませると、日本語が ���₢���킹 のように崩れます。
同じノードの「Extract From Text File」はShift_JISを選べるので、いったん文字列として読み、UTF-8のファイルに作り直してからCSVとして読みます。
- CSVが届くノード(Gmailの添付、Google Driveのダウンロードなど)の後ろに「Extract from File」を置き、「Operation」を「Extract From Text File」にする
- 「Input Binary Field」にファイルが入っている欄の名前を入れる(多くは
data、Gmailの添付はattachment_0)。「Destination Output Field」はtextにする - 「Add option」から「File Encoding」を足し、
shiftjisを選ぶ - 後ろに「Convert to File」を置き、「Operation」を「Convert to Text File」、「Text Input Field」を
textにする。「Encoding」は初期値の utf8 のまま - 後ろにもう一度「Extract from File」を置き、「Operation」を「Extract From CSV」にする
shiftjis はWindowsの拡張文字(①や「髙」など)まで読めます。

もう1つの落とし穴がBOMです。BOMはファイルの先頭に付く目に見えない印で、ExcelでCSV UTF-8として保存すると付きます。「Extract From CSV」の「Exclude Byte Order Mark (BOM)」は初期値がオフで、このまま読むと1列目の見出しの頭にBOMが混ざり、$json.会社名 が空になります。CSVを読むときは「Add option」からこれを足してオンにします。
書き出す側は、「Convert to File」の「Convert to CSV」が2.44.7ではBOM付きのUTF-8を作るので、Excelでそのまま開けます。相手のシステムがShift_JISしか受け付けないときは、「Convert to CSV」→「Extract from File」(Extract From Text File、text に出す)→「Convert to File」(Convert to Text File、「Encoding」を shiftjis)とつなぎます。Shift_JISに無い文字(絵文字や「𠮷」など)は ? に置き換わります。
文字化けは化け方で原因が分かります。
| 見え方の例 | 起きたこと | 直し方 |
|---|---|---|
| 縺雁撫縺�蜷医o縺� | UTF-8のファイルをShift_JISとして開いた(BOMなしのCSVをExcelで開いたときなど) | BOM付きUTF-8で書き出す |
| ���₢���킹 | Shift_JISのファイルをUTF-8として読んだ | 上の5ステップでUTF-8に直す |
| 1列目だけ値が取れない | 先頭にBOMが残っている | 「Exclude Byte Order Mark (BOM)」をオン |
| å¤§æ… | UTF-8の文字をLatin-1として表示した | 送る側で文字コードを付ける(メールは下で説明) |
古いWebサイトのフォームがShift_JISで送ってくるときの受け方は、「n8nで外部サービスとつなぐ:Webhook・HTTP Request・API」に書いています。
全角半角と空白
フォームの入力は、全角英数字、半角カナ、全角スペースが混ざって届き、同じ会社が別の行として並びます。直すにはJavaScriptの normalize('NFKC') が一番早く、式の中でそのまま使えます。
| 元の文字 | NFKCのあと | 注意 |
|---|---|---|
| ABC 123 | ABC 123 | 全角英数字と全角スペースが半角になる |
| カブシキガイシャ | カブシキガイシャ | 半角カナが全角カナになる |
| 03-1234-5678 | 03-1234-5678 | 全角のハイフンも半角になる |
| ㈱サンプル | (株)サンプル | 1文字の㈱が3文字になる |
| ① | 1 | 意味が変わる |
| ~(全角チルダ) | ~ | 〜(波ダッシュ)は変わらない |
| ㎡ | m2 | 単位記号がばらける |
下の4行は副作用です。会社名・メールアドレス・電話番号にはかけ、問い合わせの内容にはかけない、と分けます。
「問い合わせフォーム」の直後に「Edit Fields (Set)」を置き、「Mode」を「Manual Mapping」、「Include Other Input Fields」をオンにして、「Fields to Set」に次の3つを足します。電話番号は、フォームに「電話番号」(tel)の項目を足している場合です。
| Name | Value |
|---|---|
| company | {{ $json.company.normalize('NFKC').replace(/\s+/g, ' ').trim() }} |
{{ $json.email.normalize('NFKC').trim().toLowerCase() }} | |
| tel | {{ ($json.tel ?? '').normalize('NFKC').replace(/[^0-9]/g, '') }} |
trim() は全角スペースも消します。\s も全角スペースに当たるので、間の空白は半角1つに揃います。

n8nの文字列の関数には、日本語で思わぬ動きをするものがあります(2.44.7で確認)。
| 書き方 | 結果 | どうするか |
|---|---|---|
"株式会社ABC".replaceSpecialChars() | Zhu Shi Hui She ABC | 漢字が中国語の読みのローマ字になる。日本語には使わない |
"山田です。yamada@example.com".extractEmail() | 山田です。yamada@example.com | 前の日本語までくっつく。正規表現で取る |
"yamada@example.com".isEmail() | false | 先に normalize('NFKC') をかける |
"123".toNumber() | エラーで止まる | 先に normalize('NFKC') をかける |
extractEmail() の代わりは {{ $json.message.match(/[\w.+-]+@[\w-]+(\.[\w-]+)+/)?.[0] }} です。
電話番号はGoogle Sheetsでもう一度崩れます。「Append Row」の「Cell Format」は初期値が「Let Google Sheets format」で、手で打ったのと同じ扱いになり、0312345678 の先頭の0が消えます。「Add option」から「Cell Format」を足して「Let n8n format」にするか、その列を書式なしテキストにします。詳しくは「n8nとGoogleスプレッドシート連携:読み書き・更新・重複を防ぐ」に分けています。
日付と時差
受付日時がずれる原因は、ほぼタイムゾーンです。
| 場所 | 設定のしかた | 効くもの |
|---|---|---|
| インスタンス全体 | セルフホストは GENERIC_TIMEZONE=Asia/Tokyo。Cloudは「Instance settings」の「Runtime」の「Time zone」→「Save and restart」 | Schedule Trigger、式の $now |
| ワークフローごと | 右上の三点メニューの「Settings」→「Timezone」 | そのワークフローだけ上書き |
| コンテナのOS | セルフホストの TZ=Asia/Tokyo | Codeノードの new Date()、ログの時刻 |
セルフホストの設定の書き方と、Codeノードを別のコンテナ(task-runners)で動かしているときに両方へ渡す話は、「n8nをセルフホストで導入する:Docker ComposeでVPSに立て、独自ドメインとHTTPSで使う」に書いています。
式の日付はLuxonという部品で扱い、ワークフローのタイムゾーンに従います。new Date() はワークフローの設定を見ないので、Codeノードでも DateTime を使います。外から来る日時は、末尾に Z か +09:00 があれば DateTime.fromISO() が日本時間に直します。無い文字列は日本時間として読まれるので、相手がUTCで返しているなら DateTime.fromSQL($json.created, { zone: 'utc' }).setZone('Asia/Tokyo') のように、UTCとして読んでから日本時間に直します。
日本語の日付の読み書きは、書式を指定すれば通ります。
{{ DateTime.fromFormat('2026年10月26日 9時5分', 'yyyy年M月d日 H時m分').toISO() }}
→ 2026-10-26T09:05:00.000+09:00
{{ $now.setLocale('ja').toFormat('M月d日(EEE)') }}
→ 10月26日(月)
{{ $now.setLocale('ja-JP-u-ca-japanese').toLocaleString(DateTime.DATE_FULL) }}
→ 令和8年10月26日
setLocale('ja') を付けないと、曜日や月の名前は Mon、October のように英語で出ます。式の日付の扱い全体は「n8nの式(Expression)とデータの扱い:$json・ノードの参照・日付・JSON」で詳しく書きます。
メールの件名と送信者名
受け取る側はほとんど心配いりません。「Email Trigger (IMAP)」の「Format」が「Simple」か「Resolved」なら、ISO-2022-JPの件名と本文も読める形で出てきます。「RAW」だけは本文をbase64urlのまま返すので、自分で戻す手間が要ります。Gmailノードで読む場合も、件名はGmail側で読める形になって届きます。
詰まるのは送る側の送信者名です。Gmailノードの「Send」で「Sender Name」を空にしておくと、送信者名がGmailアカウントの表示名のまま差し込まれます。運用しているn8nで、受け取った側に送信者名が å¤§æ… のように化けて出たことがあり、受信側のメールサーバーによって起きたり起きなかったりしました。「Add option」から「Sender Name」を足して名前を入れると化けなくなります。「Send Email」ノードなら「From Email」に 問い合わせ窓口 <info@example.co.jp> の形で名前ごと書けます。
もう1つ、GmailノードとSend Emailノードは、初期設定で本文の最後に英語の一文「This email was sent automatically with n8n」を足します。日本語の自動返信の末尾に英語が付くのは不自然なので、「Append n8n Attribution」をオフにします。Gmailの細かい設定は「n8nとGmail連携:受信をきっかけに動かす、送る、振り分ける」にまとめます。

正規表現と日本語
n8nの正規表現はJavaScriptのもので、英語の資料の書き方のままだと日本語で外れます。
\wは英数字とアンダースコアだけで、ひらがなや漢字には当たらない\b(単語の区切り)は日本語の文の中では働かない。「見積」が含まれるかは/見積/で十分- 文字の種類で絞るときは
uを付け、/\p{Script=Han}+/u(漢字)、/\p{Script=Hiragana}+/u(ひらがな)を使う - 長音の「ー」はカタカナに数えられない。カタカナだけの判定は
/^[\p{Script=Katakana}ー]+$/u .lengthは絵文字や「𠮷」を2と数える。文字数を正しく数えるなら[...$json.message].length- 全角半角が混ざる値は、先に
normalize('NFKC')をかけてから当てる
「Filter」や「If」ノードの条件にある「matches regex」は、見積|料金 のようにそのまま書いても、/見積|料金/u のように前後を / で囲んで書いても通ります。
日本語でLLMに指示するとき
AIのノードへの指示や分類の名前は日本語で構いません。AI Agentに渡す道具のノード名だけは英数字にします。日本語の部分は _ に置き換わるので、日本語だけの名前の道具が2つあると、どちらも _ になって区別できません。指示の書き方やモデルの選び方は「n8nでAIエージェントを作る:ChatGPT・Claude・Geminiをつなぐ」に書いています。
フォームの画面に残る英語
n8n Form Triggerのフォームは、項目名や説明を日本語にできますが、初期のままだと英語が残ります。「Add option」から次の3つを変えます。
- 「Button Label」:初期値の Submit を「送信する」に
- 「Form Response」の「Text to Show」:初期値の Your response has been recorded を「送信しました。2営業日以内に担当からご連絡します」に
- 「Append n8n Attribution」:オフにして、下の「Form automated with n8n」を消す
設定で変えられない英語も残ります。必須の欄を空で送ったときの「This field is required」、Dropdownの最初の「Select an option …」です。ページの言語も英語として扱われます。社外の人が使うフォームでここが気になるなら、自社サイトのフォームからWebhookで受ける形に切り替えます。

ブラウザの翻訳で画面を訳すときの注意
Chromeの翻訳で編集画面を丸ごと日本語にはできますが、おすすめしません。
- キャンバスのノード名、設定項目の名前まで訳され、公式ドキュメントやエラー文と照らし合わせられなくなる。「Execute workflow」が「ワークフローを実行」になり、検索しても答えが出ない
- 式の欄やCodeノードの中の英語まで訳されることがあり、画面の表示と実際の中身がずれる。その状態で書き換えると、式やコードが壊れて保存される
n8nの画面には翻訳をかけず、分からないエラー文だけをコピーして翻訳にかけます。Chromeでn8nのドメインを「このサイトは翻訳しない」にしておけば、うっかり訳されることもありません。公式ドキュメントは翻訳をかけて読んで構いません。
応用
- 英語の問い合わせは、途中に「DeepL」か「Google Translate」ノードを置いて日本語にしてから #問い合わせ に送る。元の英語はシートに残す
- 整える「Edit Fields (Set)」を別のワークフローに切り出し、ほかのワークフローからも呼ぶ。作り方は「n8nの定期実行とサブワークフロー:Schedule Triggerと部品化」
- Shift_JISのCSVの変換も同じように部品にし、ファイルを渡せば行が返る形にする
できないことと、その代わり
| できないこと | 理由 | 代わりの手 |
|---|---|---|
| 画面を日本語にする | 公式の訳が英語だけで、編集画面の翻訳は受け付けられていない | この記事の対応表を見ながら英語のまま使う |
| Extract From CSVでShift_JISを直接読む | 選べる文字コードにShift_JISが無い | Extract From Text File(shiftjis)→Convert to Text File→Extract From CSV |
| フォームの必須エラーなどを日本語にする | 文言がフォームのひな形に直接書かれている | 自社サイトのフォームからWebhookで受ける |
| Schedule Triggerで日本の祝日を飛ばす | 祝日の考えが無い | Googleカレンダーの日本の祝日カレンダーかData tablesの祝日一覧を見て、Ifで止める |
| 「令和8年10月26日」のような和暦を読む | Luxonの書式で元号を読めない | Codeノードで元号を西暦に直してから読む |
| Shift_JISに無い文字を書き出す | 変換で ? に置き換わる | 相手がUTF-8を受け付けるか確かめ、受け付けるならUTF-8で渡す |
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
N8N_DEFAULT_LOCALE=ja を入れたのに英語のまま | 日本語の訳が存在しない | 外してよい。英語のまま使う |
CSVの日本語が ��� になる | Shift_JISのCSVをUTF-8として読んだ | Extract From Text Fileでshiftjisを選んでから読む |
CSVの1列目だけ $json.会社名 が空 | 見出しの頭にBOMが混ざっている | 「Exclude Byte Order Mark (BOM)」をオン |
| 書き出したCSVをExcelで開くと化ける | BOMなしのUTF-8を作った(Convert to Text Fileなど) | Convert to CSVで作るか、「Add Byte Order Mark (BOM)」をオン |
| 同じ会社が別の行として並ぶ | 全角半角・空白がゆれている | 入口の「Edit Fields (Set)」で normalize('NFKC') |
| 電話番号の先頭の0が消える | Cell Formatが「Let Google Sheets format」 | 「Let n8n format」にするか、列を書式なしテキストに |
| 受付日時が13〜14時間ずれる | タイムゾーンが初期値のニューヨーク | インスタンスを Asia/Tokyo にする |
| Codeノードの時刻だけ9時間ずれる | new Date() がコンテナのOSの時刻(UTC)で動いている | TZ を設定するか、Luxonの DateTime を使う |
| 送ったメールの送信者名が化ける | Gmailノードの「Sender Name」が空 | 「Sender Name」に名前を入れる |
| 自動返信の最後に英語の一文が付く | 「Append n8n Attribution」が初期値でオン | オフにする |
| 正規表現が日本語に当たらない | \w や \b を使っている | 文字そのものか \p{Script=Han} などに u を付ける |
| 翻訳をかけて直した式が壊れた | ブラウザの翻訳が式の欄まで訳した | n8nのドメインを翻訳しない設定にし、式を書き直す |
次にやること
- n8nの使い方入門:最初のワークフローを作って動かす
- n8nをセルフホストで導入する:Docker ComposeでVPSに立て、独自ドメインとHTTPSで使う
- n8nの式(Expression)とデータの扱い:$json・ノードの参照・日付・JSON
- n8nでAIエージェントを作る:ChatGPT・Claude・Geminiをつなぐ