Extension:UniversalLanguageSelector/ja

ユニバーサル言語選択 (ULS: Universal Language Selector) はユーザーが簡単に言語を選びサポートを設定できるツールです. 使用するとウェブフォント及びNarayam拡張機能が同梱されます（両方ともこの拡張機能を優先するため使われていません）. 背景とその他の情報はUniversal Language Selectorを参照してください.

使用法
主目的は、利用者が言語やその設定の変更を簡単に行えるようにすることです.

この拡張機能は以下の機能を提供します.


 * 1) 幅広い言語から柔軟に簡単にひとつ選べる.
 * 2) 地理的位置に基づくウェブ閲覧や検索により選択できる.
 * 3) 検索する要素は ISO 言語コード、現在のUIやスクリプトの言語（自称）
 * 4) 言語間検索 - 使用スクリプトに関わらず言語名を検索
 * 5) 言語名のオートコンプリート（自動補完）
 * 6) 検索文字列のつづりの誤りを自動で補正
 * 7) GeoIP から言語をお奨め
 * 8) ユーザーのブラウザやOSによる言語の選択
 * 9) 複数の入力方式
 * 使い方の完全マニュアルは を参照
 * 1) 使える複数の入力方式から選び、編集ができる欄すべてで使用
 * 2) 幅広い言語群に対応する多様な入力方式
 * 3) * 旧来の入力方式一覧はExtension:Narayam#Supported schemesを参照
 * 4) 言語ごとに入力方式を設定
 * 5) ウェブフォント
 * 6) 言語ごとに多彩なウェブフォントから選び、ページで埋め込みフォントとして用いる
 * 7) * 旧来のウェブフォント一覧は Extension:WebFonts#Supported languagesを参照
 * 8) * 同梱されたフォントの一覧
 * 9) 言語ごとに割り当てるフォントの設定



フォントの追加
言語に適したフォントをコードに追加すると、サポートする言語を増やすことができます. そうは言うものの、追加できるのは無償使用を許可する、たとえば GNU GPL、SIL OFL などの規定に従うフォントに限定されます. Google Fonts はフリーフォントのディレクトリの一例ですが、ULS の作者による検証と利用は未完です. Open Font Libraryも参照してください.

まずはじめにフリーフォントを検索するか作成します（これが最重要ポイントで、必ず自分自身で対処してください）. 次に、eot か ttf、woff の必須フォーマットに変換してください. その後、Phabricatorでフォントを拡張機能に追加するリクエストを提出します.

下記の「#Webフォントの準備」の項目でフォントの変換の方法を説明します. GNU/Linux ベースのOS の基礎知識が欠かせないため、自分でできない場合は Phabricator でフォント追加といっしょに依頼することができます（当然、フォントの追加完了までかかる時間は長引きます. ）

Webフォントの準備
WOFF とも呼ばれる Web フォント作成にはSfntly ライブラリが必要です（コマンドラインのみ. ）

インストールが完了すると、次のコマンドが使えます.

.woff の作成:

.woff2 の作成:

woff2 の作成には https://github.com/google/woff2 を使います. 作成される woff2 の圧縮ファイルのフォーマットは、最近のブラウザーがサポートしています.

次に作成する font.ini ファイルの例は次のとおり.

言語コードに付けたアスタリスク は、そのフォントがその言語の既定であることを示します. オプションとして使用したい場合は、 を付けないでください.

ファイルを作成したら、次の設定をします.
 * 1) data/fontrepo/fonts の下にディレクトリを作成.
 * 2) そこに ttf、woff、eot および font.ini ファイルを配置し、ソースリポジトリに追加.
 * 3) data/fontrepo/scripts に進み、  を実行.
 * 4) リポジトリに変更の更新作業をかけ  、Git のワークフローに従って投入する.

新しいキーの関連付けをサポート (入力メソッド)
instructions on the jquery.ime github wiki（入力メソッドの定義）に従いますが、Wikimedia-extensions-UniversalLanguageSelector Phabricator プロダクトにリクエストします.

LanguageNameIndexの更新
言語間の検索または内名の検索には、言語データを入力する必要があります. ULS に既定で同梱される言語名の索引 (data/langnames.ser) を更新するには、共通ロケールデータリポジトリの拡張機能 Extension:CLDR をインストールした後に以下のコマンドで更新をかけます.

php UniversalLanguageSelector/data/LanguageNameIndexer.php このとき langnames.serファイルが ULS/data/ フォルダに作成されたか確認してください.

設定
以下の変数が初期化の段階で自動生成され、JavaScript により mw.config.get( NAME ) を用いて使用できます.
 * - 言語コードをキーにした、英語の言語名を値に取る連想配列.
 * - ユーザーの Accept-Language 値に由来する言語コードの配列. ユーザーがブラウザ設定で選択した言語のこと.

フォントの提供に合わせ、もし使用しているウェブサーバーに不足しているなら以下の MIME の種類を追加するとよいかもしれません. こちらの説明を参照してみてください.  application/x-font-woff .woff application/vnd.ms-fontobject .eot application/x-font-ttf .ttf 以下の変数の設定について.
 * - ULS は衛星の位置測位サービスを用いると、ユーザーの所在する国や地域の位置に基づき言語を提案できる. これを「false」に設定すると、組み込み位置測位サービスを使用しない. キー「country_code」または「country」を持つオブジェクトにwindow.Geo を設定すると、独自の位置測位サービスが提供される. 「true」に設定すると Wikimedia の geoIP サービスに問い合わせ、指定されたコールバックパラメーターを使う jsonp を返す. 既定値は http://freegeoip.net/json/ で、フォーマットは同じ.
 * - 下記の設定変数によって動作が上書きされない限り、言語選択、コンパクトな言語リンク、すべての人のための入力メソッドと Web フォントが有効. 「false」の場合も他の拡張機能を使うために、クラスとリソースローダーモジュールを登録. cookie またはsetlang クエリパラメーターを使った言語の変更は不可能.
 * - 匿名ユーザーは cookie と setlang クエリ・パラメーターを使い、言語を変更できる. Cookie を考慮せずに匿名ページビューをキャッシュする場合は使用しないこと.  あるいは $wgULSEnableAnon が「false」の場合は無効.
 * - 既定ではすべてのユーザーの入力メソッド機能が無効. その場合もユーザーは手動で有効にできる.
 * - 言語選択トリガーの位置と形式. 選択肢は、 でユーザー名もしくは個人設定のツールバーの「ログイン」ボタンの近くにリンクを配置（既定）. もしくは、  でサイドバーの言語間リンク一覧のヘッダー近くにアイコンを配置.
 * - jQuery による要素の選択機能. IME を無効にした場合のみ有効. 例：

ULSトリガーの位置

 * - 言語選択トリガーの位置と形式. 選択肢は、 でユーザー名もしくは個人設定のツールバーの「ログイン」ボタンの近くにリンクを配置（既定）. もしくは、  でサイドバーの言語間リンク一覧のヘッダー近くにアイコンを配置.

ULS トリガーは画面上のどこにでも配置でき、 という要素がその役割を果たします.

既定のフォントをオーバーライドする
ULS が Web フォントとして提供するフォント リポジトリは広汎で、ときとして1言語に対応するフォントが何種類もあったり、言語や文字ごとに既定のフォントがあったりします. フォントの順位や既定のフォントはオーバーライド可能で、以下のように汎用スクリプトの利用(MediaWiki:Common.js) または個人のスクリプト (Special:MyPage/common.js) を用います.

この場合 languageCode は有効な言語コード (例：en、hi、nl) を使います. FontA と FontB のフォントがリポジトリにある場合、上記の languageCode の例ではローカルのコンピューターにあるフォントを既定のフォントに設定し、既定の web フォントは使いません.

設定をキャッシュする
Webフォントファイルがクライアントのマシンに確実にキャッシュされるためには、フォントのファイルタイプをWebサーバーの設定に追加する必要があります. Apache2 での手順は次のとおり.
 * 関連ディレクトリの FilesMatch の FileTimes 正規表現に、フォントファイルの拡張子を追加する例.
 * ExpiresByType の値は画像の MIME タイプ同様、関連の MIME タイプに追加する.
 * TTF には標準的な MIME タイプはない. ウィキメディアでは application/x-font-ttf を使用.
 * MIME タイプの追加方法.

 AddType application/x-woff .woff AddType application/vnd.ms-fontobject .eot AddType application/x-font-ttf .ttf

すべての例は ウィキメディアのクラスタ設定の更新のキャッシュを参照してください（gerrit ログインが必要）.

ページ翻訳
UniversalLanguageSelector は Translate (翻訳) 拡張機能と依存関係にあり、さまざまな言語選択機能に使われます. ユーザーの UI 言語に依存するリンクのMyLanguageシステムもそのひとつで、その他にも設定できます. ページ翻訳の拡張機能を参照してください.

Webフォントの使用
特定の言語に使う web フォントは「言語設定」→「表示」と進んで設定します. 既定ではそのメニューのいちばん上にあるフォントがそのウィキに適用されます. ユーザーがフォントを変更すると記録され、どのページでもそのフォントが使われます. システムフォントを選択し、フォントの埋め込みを無効にすることもできます.

利用できるフォントが利用者のローカル システムにある場合は、フォントは MediaWiki サーバーからダウンロードされません. 利用者のコンピューターから取得されます. フォントが存在しない場合は、必要になった時点でサーバーから初回に1度だけダウンロードされます. 次回以降は、フォントはローカルのキャッシュから取得されます.

フォントファミリーを指定
ウィキテキスト YourText で web フォント拡張機能は指定されたフォントを備えているかどうかチェックし、クライアントにダウンロードします. たとえ特定のフォントがユーザーのコンピューターになくても、閲覧者は本文を読むのに不自由しません.

言語を指定
ウィキテキスト YourText で web フォント拡張機能は指定されたフォントを備えているかどうかチェックし、クライアントにダウンロードします. たとえ特定のフォントがユーザーのコンピューターになくても、閲覧者は本文を読むのに不自由しません. 言語に複数のフォントが対応する場合は、既定のフォントが使用されます. もし既定のフォントが好みでなかったら、フォントファミリーの手法でフォントを指定します. タグの定義に言語選択とフォントファミリーの両方がある場合はフォントファミリーが優先されます.

例:

𒄖𒉈𒅁𒌨𒅎

この例では、楔形文字でレンダリングしたテキストにアッカド語フォントを使用します.

𒄖𒉈𒅁𒌨𒅎

関連項目

 * ユニバーサル言語選択（ULS）
 * Universal Language Selector/Interaction Design Framework（ULS のインタラクション設計フレームワーク）
 * Universal Language Selector/Technical Design（ULS の技術的な設計）
 * Technical details of Webfonts feature of Universal Language Selector（ULS のWebフォント機能の技術詳細）