CS-Cart.jp開発者ドキュメント
  • はじめに
  • Getting Started
    • CS-Cart開発者向け注意事項
    • CS-Cartの構成
    • デバッグ方法
  • コア
    • Hooks
    • コントローラー
      • Pre&Post コントローラー
    • データベース
      • データベースの構造と命名規則
      • データベース・プレイスホルダー
      • 他のデータベースへの接続
    • ショップフロント
      • ブロック
      • blockメインスキーマ—
      • Dynamic Objects
      • ajaxリクエストの使用方法
      • 特別なCSSセレクター
      • マイクロフォーマット Microformats
      • 通知システム
      • ツールチップ
    • 設定
    • コア関数
    • イベントの通知
    • 言語変数
    • スキーマー
  • アドオン開発
    • フック
      • PHPフック
      • テンプレートフック
    • アドオンチュートリアル
      • 「Hello World」チュートリアル
      • Advanced Add-on チュートリアル
      • 商品リスト、詳細ページのカスタムテンプレートを作成
      • 支払方法の開発
    • アドオンの管理プロセス
    • Add-on スキーマー
      • アドオンの互換性
      • 他のアドオンとの競合・依存設定
    • APIの拡張
    • スキーマーの拡張
    • アドオンのディレクトリ構造
    • アドオンの言語変数
    • .poファイルによる言語ファイルの作成
  • テーマ開発
    • テーマ開発の概要
    • テーマの複製
    • レイアウトの管理
    • トップパネルとヘッダー
    • テーマを使用したショップの設定の変更
    • CSS
    • テーマの言語変数
    • メディアファイル
    • 親テーマ
    • スタイルとビジュアルエディター
    • レイアウトエディター
    • テンプレート
  • デバッグ
    • デバッガー
    • ファイルエディター
GitBook提供
このページ内
  • 言語変数の表記について
  • POファイル
  • 言語変数の構造
  • プレースホルダー
  • 複数形
  • 言語変数の使用方法
  • PHPコード内
  • Smartyテンプレート内
  • プレースホルダー
  • 複数形
  • 言語変数の編集
  1. コア

言語変数

前へイベントの通知次へスキーマー

最終更新 7 か月前

CS-Cart(通常版・マーケットプレイス版)やアドオンは、言語変数によって、国際化やローカライズが可能です。

あらゆる言語のテキストは、PHPコードやSmartyテンプレートファイルに直接記述されていません。言語の表示については、特別な関数が呼び出されます。言語変数のID(名前)が関数に渡され、ユーザーの環境に応じた言語でテキストが返されます。

言語変数の表記について

POファイル

CS-Cart(通常版・マーケットプレイス版)とそのアドオンの翻訳データは、POファイルに保存されます。各言語には、言語変数の値を格納する個別のPOファイルが必要です。

POファイルは一般的に広く使用されている形式です。 ローカライズに関連する多くのサービスは、POファイルをインポート・エクスポートできます。 たとえば、Crowdinを使用してCS-Cartを翻訳することが可能です。

HINT

POファイルの詳細については、(英語)。

POファイルは、CS-Cartをインストールしたディレクトリのvar/langs以下のディレクトリにあります。これらのファイルは専用のアプリケーション、または一般的なテキストエディターで編集することが可能です。

言語変数の構造

英語のPOファイル内の言語変数は次のようになります。

msgctxt "Languages::email_marketing.subscription_confirmed"
msgid "Thank you for subscribing to our newsletter"
msgstr "Thank you for subscribing to our newsletter"

以下はフランス語のPOファイルです。同じ言語変数があります。

msgctxt "Languages::email_marketing.subscription_confirmed"
msgid "Thank you for subscribing to our newsletter"
msgstr "Merci de votre inscription à notre newsletter"

日本語では以下のようになります。

msgctxt "Languages::email_marketing.subscription_confirmed"
msgid "Thank you for subscribing to our newsletter"
msgstr "メールマガジンの購読誠にありがとうございます。"
  • msgctxt - メッセージコンテキスト。CS-Cartやアドオンでは、このメッセージコンテキストを使用して、SmartyテンプレートとPHPコード(プレフィックスを除く)に表示される言語変数の名前を保存します。

POファイルには、文字列の翻訳、アドオンの名前と説明、さまざまな設定とセクションの名前が保存されます。そのため、異なるタイプのデータの翻訳には異なる接頭辞が付いています。PHPまたはTPLファイルに表示される言語変数の名前は「Languages::プレフィックス」で始まる必要があります。

  • msgid - 翻訳元の言語の言語変数の値です。ここには英語で値を指定することをお勧めします。

  • msgstr - 翻訳元のテキストからターゲット言語への翻訳です。翻訳元の言語のPOファイルでは、msgstrはmsgidと同じになります。

プレースホルダー

商品名や各種値など、変更可能なデータを言語変数に含める必要がある場合があります。この場合は、次のように角括弧で囲まれたプレースホルダーを使用します。

msgctxt "Languages::admin_text_letter_footer"
msgid "E-shop of [company_name]."
msgstr "E-shop of [company_name]."

Smartyテンプレートでプレースホルダーがどのように使用されるかを確認してください。

複数形

多くの言語では、単数形と複数形が異なる場合があります。例えば、次の2つのフレーズを考えてみましょう。

  • (The delivery will take) 1 day.

  • (The delivery will take) 2 days.

異なるフォームで言語変数を作成する場合は、|記号を使用してmsgidおよびmsgstrの値を区切ります。また、番号に置き換えられる[n]プレースホルダーを追加します。2つの形式の言語変数の例を次に示します。

msgctxt "Languages::n_days"
msgid "[n] day|[n] days"
msgstr "[n] day|[n] days"

一部の言語(例えばロシア語など)には複数形が複数あります。 ターゲット言語に元の言語よりも複数形がある場合の例:

  • msgidは元の言語と同じままです。

  • msgstrには、ターゲット言語のすべての形式の説明があります。

以下はロシア語の言語変数です。一つの言語変数に2つの複数形があります。

msgctxt "Languages::n_days"
msgid "[n] day|[n] days"
msgstr "[n] день|[n] дня|[n] дней"

複数の単語形式をリストにする場合、単数形が常に最初に記述されます。 さまざまな言語のフォームがリストされる順序は、言語の複数規則に準拠しています。

言語変数の使用方法

PHPコード内

コア関数__は、言語変数の値を表示するためにPHPコード内で使用されます。

<?php
function __($var, $params = array(), $lang_code = CART_LANGUAGE);

必須の引数は、言語変数の名前です。2番目の引数はプレースホルダーの値を渡します。3番目の引数ではターゲット言語を指定します。

📘

デフォルトでは、ターゲット言語はユーザーの(環境の)ロケールによって決定されます。

__関数の例:

<?php
$confirmed_text = __('email_marketing.subscription_confirmed');
fn_set_notification('I',$confirmed_text, $msg);

Smartyテンプレート内

__を使用して、言語変数をSmartyテンプレートに挿入できます。 文字列を中括弧で囲みます。以下のコードは、Smary内でhelloという言語変数を挿入する方法です。

{__("hello")}

このような文字列は、テンプレートのコンパイル中にSmartyラッパークラスの__メソッドが呼び出され、置き換えられます。次に、そのクラスは上記のコア関数を呼び出します。

プレースホルダー

以下は、テンプレート内で使用されたプレースホルダーを持つ言語変数の例です。

<p>
   {__("admin_text_letter_footer", ["[company_name]" => $settings.Company.company_name])}
</p>

複数形

複数形の言語変数を使用する場合、__関数の2番目の[n]パラメーターでプレースホルダーの代わりに置換された数値を渡します。

<?php
$return[$service_code]['delivery_time'] = __("n_days", array($shipment->GuaranteedDaysToDelivery));

渡された番号に応じて、適切なフォームが自動的に選択されます。 英語の場合の例:

  • 0 days

  • 1 day

  • 3 days

言語変数の編集

POファイルを変更する以外にも言語変数を編集する方法があります。

  • [管理]パネルで、[一般設定] →[言語]→[`言語変数]**に移動します。

  • REST API経由でlangvarsエンティティを使用します。

GNUプロジェクトのWebサイトをご覧ください