Grav-multi-language

提供:Dev Guides
移動先:案内検索

Grav-多言語

多言語とは、Webサイトで異なる言語を使用することと定義されます。 Gravサイトで多言語を使用するのに役立つさまざまな手順を学習します。

多言語の基本

基本的に、Gravにはページを表示するための_.md_ファイルが必要です。 多言語サポートを有効にすると、 default.en.md や* default.fr.md。*などのファイルが検索されます。

言語構成

最初に user/config/system.yaml ファイルにいくつかの基本的な言語設定を設定する必要があります。 ファイル。

Language:
   Supported:
      - en
      - Fr

これにより、Gravで多言語サポートが有効になりました。 上記のコードでは、 en は英語を意味し、 fr はフランス語を意味します。 これは、サイトがこれら2つの言語をサポートすることを意味します。 ここで、デフォルトの言語は_en(英語)_です。 最初に_Fr(フランス語)_を書くと、それがデフォルトの言語になります。

多言語ページ

デフォルトの言語が*英語*に設定されている場合、Gravは default.en.md ファイルを探します。 そのファイルが見つからない場合、Gravは設定した別の言語を探します。 両方の言語が見つからない場合、 default.md ファイルを探します。

  • 例 *

default.en.mdファイル

---
title: Home
---

# Grav is Running!
## You have installed* *Grav* *successfully

上記のコードは、次の出力を生成します-

Grav Multi Language

デフォルト言語としてフランス語の場合、default.fr.mdファイルは次のようになります-

---
titre: Accueil
---

# Grav est en marche!
## Vous avez installé* * ** Grav succès

上記のコードは、次の出力を生成します-

Grav Multi Language

URL経由のアクティブな言語

言語コードを使用してWebサイトのURLを更新する場合は、次の手順に従います-

あなたのサイトを英語にしたい場合は、ブラウザに次の行を入力してください-

http://www.mysite.com/en

あなたのサイトをフランス語にしたい場合は、ブラウザに次の行を入力してください-

http://www.mysite.com/fr

ブラウザ経由のアクティブ言語

Gravには http_accept_language 値を取得し、それらを比較してサポートされている言語を表示する機能があります。 これを機能させる場合は、言語セクションで user/system.yaml ファイルを有効にします-

language :
   http_accept_language : true

言語ベースのホームページ

言語ベースのホームページを作成するには、 site.yaml ファイルで次のコードを有効にする必要があります-

home:
   aliases:
      en:/homepage
      fr:/page-d-accueil

このようにして、Gravはアクティブな言語から使用する言語を見つけます。

次のコードは、Gravにデフォルトの言語ルートにリダイレクトさせます。 _include_route_オプションは、* http://www.mysite.com/en/home*のようなURLコードを強制的に追加します

languages:
   home_redirect:
      include_lang: true
      include_route: false

言語ベースのTwigテンプレート

ファイルが_default.en.md_の場合、Gravは_defaultl.twig_として小枝ファイルを探します。 言語固有の小枝ファイルが必要な場合は、言語フォルダーのルートレベルでアップロードする必要があります。 現在のテーマが templates/defaultl.twig にある場合は、 templates/en/ フォルダーを作成し、その中に英語固有のフォルダーを次のように配置する必要があります。 templates/en/defaultl.twig

言語スイッチャー

言語切り替えプラグインはhttps://github.com/getgrav/grav-plugin-langswitcher[Grav Package Manager(GPM)]で入手できます。

Twigを介した翻訳

小枝フィルターと_t()_関数を使用します。 両方とも同様に機能します。 別のTwigファイルがある場合は、配列から変換できます。

プラグインとテーマ言語の翻訳

テーマまたはプラグイン(/user/plugins/error/languages.yaml)のルートに languages.yaml ファイルを作成して、プラグインとテーマで翻訳を提供します。サポートされているすべての言語が含まれている必要があります。

翻訳のオーバーライド

翻訳をオーバーライドする場合は、_user/languages/_フォルダーの言語ファイルに値のペアを配置する必要があります。

高度な

環境-ベースの言語処理

URLに従ってユーザーをサイトの正しいバージョンにルーティングすることができます。 サイトのURLが標準の* http://www.yoursite.com*のエイリアスである* http://english.yoursite.com*である場合、/user/english.yoursite.comとして構成を作成できます。/config/system.yaml.

languages:
   supported:
      - fr
      - en

言語の順序を逆にします。 上記のコードでは、_fr_がデフォルトの言語です。 _en_を上部に、_fr_を下部に配置して順序を変更すると、_en_がデフォルトの言語になります。

言語エイリアスルート

同じページの異なる言語バージョン間で切り替えることは非常に困難です。ページオブジェクトで* Page.rawRoute()*メソッドを使用できます。 単一ページの異なる言語翻訳に対して同じ生のルートを取得します。 適切なルートを取得するには、言語コードを先頭に置きます。

あなたがフランス語のページにカスタムルートでいる場合-

/ma-page-francaise-personnalisee

英語ページには、カスタムルートがあります-

/my-custom-french-page

あなたはフランス語のページの生のページを取得し、それはかもしれない-

/blog/custom/my-page

次に、新しいURLとなる言語を追加します。

/en/blog/custom/my-page

翻訳サポート

Gravは、テーマとプラグインで使用されるPHPを介してTwigで翻訳を提供するためのシンプルなメカニズムを提供します。 デフォルトで有効になっており、特定の言語が定義されていない場合は en 言語を使用します。 有効または無効にするには、system.yamlファイルに移動して変更を加えます。

languages:
   translations: true

多くの方法と異なる場所で翻訳を提供できます。 最初の場所はsystem/languagesフォルダーです。 ファイルは en.yamlfr.yaml などで作成する必要があります。 フォーマット。 各yamlファイルは、キーペアの配列またはネストされた配列で構成する必要があります。

SITE_NAME: My Blog Site
HEADER:
   MAIN_TEXT: Welcome to my new blog site
   SUB_TEXT: Check back daily for the latest news

セッションベースのアクティブ言語

アクティブな言語のセッションベースのストレージをアクティブ化できます。 有効にするには、system.yamlで session:enable:true を使用し、言語設定を有効にする必要があります。

languages:
   session_store_active: true

言語スイッチャー

GPMから言語切り替えプラグインをインストールします。

言語固有のドメインを使用したセットアップ

デフォルト言語を割り当てるための環境ベースの言語処理構成があります。 このオプションをsystem.yamlに追加します。 trueに設定する必要があります。

pages.redirect_default_route: true

以下を .htaccess ファイルに追加し、要件に応じて言語スラッグとドメイン名を選択します。

# http://www.cheat-sheets.org/saved-copy/mod_rewrite_cheat_sheet.pdf
# http://www.workingwith.me.uk/articles/scripting/mod_rewrite

# handle top level e.g. http://Grav-site.com/de
RewriteRule ^en/?$ "http://Grav-site.com" [R = 301, L]
RewriteRule ^de/?$ "http://Grav-site.de" [R = 301, L]

# handle sub pages, exclude admin path
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^en/(.*)$ "http://Grav-site.com/$1" [R = 301, L]
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^de/(.*)$ "http://Grav-site.de/$1" [R = 301, L]