アドオン

バージョン 2.19 で追加.

アドオンを使用すると、翻訳ワークフローの変更および自動化ができます。管理者は各翻訳コンポーネントの 管理アドオン メニューからアドオンの追加と管理ができます。

ヒント

また、APIDEFAULT_ADDONS または install_addon を使用してアドオンを設定できます。

../_images/addons.png

付属のアドオン

自動翻訳

バージョン 3.9 で追加.

アドオン ID

weblate.autotranslate.autotranslate

設定

mode

自動翻訳モード

設定できる値:

suggest -- 提案として追加

translate -- 翻訳として追加

fuzzy -- 「要編集」として追加

filter_type

検索フィルター

すべての文字列を翻訳すると、既存の翻訳はすべて破棄されますのでご注意ください。

設定できる値:

all -- すべての文字列

nottranslated -- 未翻訳の文字列

todo -- 翻訳未完了の文字列

fuzzy -- 要編集マーク付きの文字列

check:inconsistent -- 不合格項目: 一貫性の欠如

auto_source

自動翻訳の参照先

設定できる値:

others -- 他の翻訳コンポーネント

mt -- 機械翻訳

component

コンポーネント

参照先として使用するコンポーネントのスラッグを入力します。現在のプロジェクト内のすべてのコンポーネントを使用する場合は、空白のままにします。

engines

機械翻訳エンジン

threshold

スコアしきい値

トリガー

コンポーネント update、daily

機械翻訳または他のコンポーネントを使用して文字列を自動的に翻訳します。

起動条件:

  • コンポーネントに新しい文字列が追加されたとき。

  • コンポーネントごとに毎月 1 回。BACKGROUND_TASKS から設定します。

JavaScript 現地語化 CDN

バージョン 4.2 で追加.

アドオン ID

weblate.cdn.cdnjs

設定

threshold

翻訳率のしきい値

サーバに置く翻訳のしきい値。

css_selector

CSS セレクタ

翻訳可能な要素を検出する CSS セレクタ。

cookie_name

言語 Cookie 名

言語設定を保存する Cookie の名前。

files

HTMLファイルから文字列を抽出

現在のリポジトリ内のファイル名のリスト、または翻訳可能な文字列を解析するリモート URL。

トリガー

daily、リポジトリ post-commit、リポジトリ post-update

JavaScript または HTML の現地語化用に、翻訳をコンテンツ配信ネットワークに公開します。

静的な HTML ページを現地語化したり、JavaScript コードで翻訳を読み込むために使用できます。

HTML のページに挿入して、翻訳を可能にするコンポーネント専用の URL を生成します。詳細については、Weblate CDN を使用した HTML と JavaScript の翻訳 を確認してください。

空白文字列の削除

バージョン 4.4 で追加.

アドオン ID

weblate.cleanup.blank

設定

このアドオンには設定はありません。

トリガー

リポジトリ post-commit、リポジトリ post-update

翻訳ファイルから翻訳されていない文字列を削除します。

翻訳ファイルに空の文字列を含ませたくない場合使用します(例: 翻訳ライブラリにおいて原文に戻すのではなく、空の文字列が不足していると表示させる場合)。

翻訳ファイルのクリーンアップ

アドオン ID

weblate.cleanup.generic

設定

このアドオンには設定はありません。

トリガー

リポジトリ pre-commit、リポジトリ post-update

すべての翻訳ファイルを、モノリンガル用の基礎となる翻訳ファイルと一致するように更新します。ほとんどのファイル形式で、基礎となる翻訳ファイルに存在しない、無効な翻訳キーは削除されます。

不足している言語を追加

アドオン ID

weblate.consistency.languages

設定

このアドオンには設定はありません。

トリガー

daily、リポジトリ post-add

プロジェクト内のすべてのコンポーネントで一貫した言語のセットが使用されるようにします。

足りない言語は、24 時間ごとに 1 回、さらに新しい言語を Weblate に追加したときに確認します。

他のほとんどのアドオンとは異なり、このアドオンはプロジェクト全体に影響します。

ヒント

新しく追加した文字列を 自動翻訳 アドオンで翻訳します。

コンポーネントの検出

アドオン ID

weblate.discovery.discovery

設定

match

翻訳ファイルを照合する正規表現

file_format

ファイル形式

name_template

コンポーネント名のカスタマイズ

base_file_template

モノリンガル用の、基礎となる翻訳ファイル名の設定

バイリンガル翻訳の場合は、何も設定しないでください。

new_base_template

新しい翻訳用の、基礎となる翻訳ファイルの設定

新しい翻訳の作成に使用するファイルのファイル名。gettext では .pot ファイルを選択します。

intermediate_template

中間言語ファイル

中間翻訳ファイルのファイル名。多くの場合、これは開発者により提供される翻訳ファイルで、実際の原文を作成する際に使用されます。

language_regex

言語フィルター

ファイル マスクのスキャン時に、翻訳ファイルをフィルター処理する正規表現。

copy_addons

アドオンを、メイン コンポーネントから新しく作成したコンポーネントにクローンする

remove

存在しないファイルのコンポーネントの削除

confirm

上記の一致が正しいかを確認する

トリガー

リポジトリ post-update

バージョン管理システムのファイル変更に基づいて、プロジェクトコンポーネントを自動的に追加または削除します。

VCS を更新するたびに起動し、その他は、import_project 管理コマンドと同じです。この方法で、1 つの VCS 内で複数の翻訳コンポーネントを追跡できます。

照合は、複雑な設定ができる正規表現を使用して行われますが、そのためにはある程度の知識が必要です。一般的な使用例については、アドオンのヘルプ セクションを確認してください。

保存 をクリックすると、一致するコンポーネントのプレビューを表示し、設定が実際のニーズに合っているか確認する方法:

../_images/addon-discovery.png

ヒント

コンポーネントを検出するアドオンは、Weblate の内部 URL を使用します。これは、複数のコンポーネント間で VCS 設定を共有するのに便利です。リンクされたコンポーネントは、各コンポーネントの ソースコードのリポジトリ フィールド(管理設定バージョン管理システム の中)に weblate://project/main-component を入力して、設定したメイン コンポーネントのローカル リポジトリを使用します。これにより、設定およびシステム リソースの時間をも節約できます。

一括編集

バージョン 3.11 で追加.

アドオン ID

weblate.flags.bulk

設定

q

検索文字列

state

翻訳状態の設定

設定できる値:

-1 -- 翻訳禁止

10 -- 要編集

20 -- 翻訳済

30 -- 承認済

add_flags

翻訳フラグの追加

remove_flags

翻訳フラグの削除

add_labels

ラベルの追加

remove_labels

ラベルの削除

トリガー

コンポーネント update

文字列のフラグ、ラベル、状態を一括編集します。

NOT has:label という検索クエリを使用してラベル付けを自動化し、すべての文字列に必要なラベルが付くまでラベルを追加します。Weblate メタデータに対する他の自動操作も実行できます。

例:

新しい文字列に自動的にラベルを生成

検索クエリ

NOT has:label

ラベルの追加

recent

アプリ ストアのメタデータ ファイル の変更履歴 エントリを、すべて翻訳禁止にする

検索クエリ

language:en AND key:changelogs/

翻訳フラグの追加

read-only

未翻訳の翻訳文に "要編集" フラグを付ける

バージョン 3.1 で追加.

アドオン ID

weblate.flags.same_edit

設定

このアドオンには設定はありません。

トリガー

ユニット post-create

VCS からインポートされた新しい翻訳可能な文字列が原文と一致するたびに、Weblate は "要編集" フラグを付けます。特に、未翻訳の文字列は原文で埋めるファイル形式では分かりやすくなります。

ヒント

また、ref:component-check_flagsstrict-same フラグを追加して、未翻訳の翻訳文 検査を強化できます。

新しい原文に "要編集" フラグを付ける

アドオン ID

weblate.flags.source_edit

設定

このアドオンには設定はありません。

トリガー

ユニット post-create

新しい原文を VCS からインポートすると、Weblate は毎回 "要編集" フラグを付けます。このため、開発者が作成した原文を簡単にフィルターしたり、編集したりできます。

新しい翻訳に "要編集" フラグを付ける

アドオン ID

weblate.flags.target_edit

設定

このアドオンには設定はありません。

トリガー

ユニット post-create

新しい翻訳可能な文章を VCS からインポートすると、Weblate は毎回 "要編集" フラグを付けます。これにより、開発者が作成した翻訳文を簡単にフィルターしたり、編集したりできます。

統計データの生成

アドオン ID

weblate.generate.generate

設定

filename

生成ファイルの名前

template

生成ファイルの内容

トリガー

リポジトリ pre-commit

翻訳状況の詳細情報ファイルを生成します。

Django テンプレートは、ファイル名とコンテンツの両方で使用できます。マークアップの詳細については、テンプレート用のマークアップ を確認してください。

例えば、各翻訳の概要ファイルの生成:

生成ファイルの名前

locale/{{ language_code }}.json

内容
{
   "language": "{{ language_code }}",
   "strings": "{{ stats.all }}",
   "translated": "{{ stats.translated }}",
   "last_changed": "{{ stats.last_changed }}",
   "last_author": "{{ stats.last_author }}",
}

事前に原文を翻訳に代入

バージョン 4.11 で追加.

アドオン ID

weblate.generate.prefill

設定

このアドオンには設定はありません。

トリガー

コンポーネント update、daily

初期値として原文を翻訳に代入する。

コンポーネント内の全ての未翻訳の文字列には原文が入り、要編集になります。これは、翻訳ファイルに空の文字列を含めることができない場合に使用します。

疑似ロケールの生成

バージョン 4.5 で追加.

アドオン ID

weblate.generate.pseudolocale

設定

source

原文

target

翻訳先

この言語の翻訳は全て上書きされます

prefix

文字列の固定接頭辞

var_prefix

文字列の可変接頭辞

suffix

文字列の固定接尾辞

var_suffix

文字列の可変接尾辞

var_multiplier

可変部分の係数

可変部分を繰り返す回数を、原文の長さの何倍にするか。

include_readonly

翻訳禁止の文字列を含める

トリガー

コンポーネント update、daily

原文に接頭辞と接尾辞を自動的に追加して、翻訳を生成します。

疑似ロケールは、翻訳対象になっていない文字列を探すのに便利です。すべての翻訳可能な原文を変更したあと、アプリケーションを疑似ロケールで実行して、置き換えられていない文字列を簡単に見つけることができます。

また、現地語化したときにレイアウトが崩れるかもしれない文字列も発見できます。

可変部分を使用すると、原文の長さに基づいてテキストが拡張し、現地語化の後にユーザー インターフェイスに収まらないことがある文字列を探せます。可変部分は、テキストの長さに係数を掛けた回数繰り返します。たとえば、可変接尾辞が _ で係数が 1 だと Hello world は、Hello world___________ になります。 — この接尾辞は、原文の文字ごとに 1 回繰り返します。

文字列の生成に使用されるパターン:

文字列の固定接頭辞 文字列の可変接頭辞 原文 文字列の可変接尾辞 文字列の固定接尾辞

ヒント

テストには実際の言語を使用できますが、 Weblate には専用の疑似ロケール( en_XAar_XB )が用意されています。

ヒント

このアドオンを使用して、既存の言語または類似の言語の新しい言語への翻訳を開始できます。コンポーネントに翻訳を追加したら、アドオンに従います。例: fr があり、fr_CA の翻訳を開始する場合、ソースに fr、ターゲットには fr_CA を設定し、接頭辞と接尾辞を空白にするだけです。

コピー後に作成した翻訳を Weblate に変更されないように、新しい翻訳が入力されたらアドオンをアンインストールしてください。

コメント内の貢献者情報

アドオン ID

weblate.gettext.authors

設定

このアドオンには設定はありません。

トリガー

リポジトリ pre-commit

PO ファイルヘッダーのコメントを更新し、貢献者名と貢献した西暦を追加します。

PO ファイルヘッダーは次のようになる:

# Michal Čihař <michal@cihar.com>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.

configure ファイルの ALL_LINGUAS 変数の更新

アドオン ID

weblate.gettext.configure

設定

このアドオンには設定はありません。

トリガー

リポジトリ post-add、daily

新しい翻訳を追加すると、configureconfigure.in、または任意の configure.ac ファイルの ALL_LINGUAS 変数を更新します。

gettext 出力のカスタマイズ

アドオン ID

weblate.gettext.customize

設定

width

長い行を折り返す

デフォルトでは、gettext は 77 文字または改行で行を折り返します。--no-wrap パラメータを指定すると、改行でのみ折り返されます。

設定できる値:

77 -- 行を 77 文字と改行で折り返す(xgettext のデフォルト)

65535 -- 改行でのみ行を折り返す('xgettext --no-wrap' のように)

-1 -- 行を折り返さない

トリガー

ストレージ post-load

改行処理など、 gettext の出力動作をカスタマイズできます。

使用できるオプション:

  • 77 文字または改行で行を折り返す

  • 改行でのみ行を折り返す

  • 行を折り返さない

注釈

デフォルトでは、gettext は 77 文字または改行で行を折り返します。--no-wrap パラメータを指定すると、改行でのみ折り返されます。

LINGUAS ファイルの更新

アドオン ID

weblate.gettext.linguas

設定

このアドオンには設定はありません。

トリガー

リポジトリ post-add、daily

新しい翻訳が追加されたときに LINGUAS ファイルを更新します。

MO ファイルの生成

アドオン ID

weblate.gettext.mo

設定

path

生成された MO ファイルのパス

指定しない場合は、PO ファイルの場所を使用します。

トリガー

リポジトリ pre-commit

変更された PO ファイルごとに自動的に MO ファイルを生成します。

MO ファイルが生成される場所はカスタマイズでき、フィールドは テンプレート用のマークアップ を使用します。

POT に合わせて PO ファイルを更新 (msgmerge)

アドオン ID

weblate.gettext.msgmerge

設定

previous

翻訳済み文字列の以前の msgid を保持する

no_location

翻訳済みの文字列の場所を削除する

fuzzy

あいまい検索を使用する

トリガー

リポジトリ post-update

msgmerge を使用して POT ファイル( 新しい翻訳のテンプレート で設定)に整合するように、すべての PO ファイル( ファイル マスク で設定)を更新します。

新しい変更がアップストリーム リポジトリから新しい変更をプルするたびに起動します。大部分の msgmerge のコマンド ライン オプションはアドオンの設定から設定できます。

Git コミットのスカッシュ

アドオン ID

weblate.git.squash

設定

squash

コミットの圧縮

設定できる値:

all -- すべてのコミットを 1 つに統合

language -- 言語別

file -- ファイル別

author -- 著者別

append_trailers

スカッシュしたコミット メッセージに翻訳者情報を追加する

トレーラ行とは、RFC 822 のメール ヘッダーに似た "Co-authored-by: …" のような行のことで、コミットメッセージの自由形式部分の末尾につきます。

commit_message

コミットメッセージ

このコミットメッセージは、スカッシュしたコミットのコミットメッセージを結合する代わりに使用されます。

トリガー

リポジトリ post-commit

変更をプッシュする前に、Git コミットをスカッシュします。

変更をプッシュする前に Git コミットの内容を簡略化するモードの種類:

  • すべてのコミットを 1 つに統合

  • 言語別

  • ファイル別

  • 翻訳者別

元々のコミット メッセージは保持されますが、翻訳者別 を選択するか、コミット メッセージに含めるようカスタマイズしない限り、翻訳者の情報は失われます。

元々のコミット メッセージは、オプションを使用すると独自のコミット メッセージに書き換えられます。

オプションを使用して、元のコミット メッセージからトレーラー(Co-authored-by: のような行)を切り取り、スカッシュコミットのコミットメッセージの末尾に追加できます。これにより、共同翻訳者全員が、Co-authored-by: として、適切にクレジットされます。

JSON 出力形式のカスタマイズ

アドオン ID

weblate.json.customize

設定

sort_keys

JSON キーの並べ替え

indent

JSON 形式のインデント

style

JSON のインデントスタイル

設定できる値:

spaces -- スペース

tabs -- タブ

トリガー

ストレージ post-load

インデント処理や並べ替えなど、JSON 出力形式の変更ができます。

Java プロパティ ファイルの整形

アドオン ID

weblate.properties.sort

設定

このアドオンには設定はありません。

トリガー

リポジトリ pre-commit

Java プロパティ ファイルを整形およびソートします。

  • 改行を Unix の改行コードに統一する。

  • Unicode エスケープ シーケンスを大文字に整形する(存在する場合)。

  • 空白行とコメントを削除する。

  • 文字列をキーでソートする。

  • 重複する文字列を削除する。

古いコメントの削除

バージョン 3.7 で追加.

アドオン ID

weblate.removal.comments

設定

age

保存日数

トリガー

daily

コメントを削除するまでの期間を設定します。

これは、古くなった可能性のある古いコメントを削除する場合に便利です。コメントが古いからといって、その重要性が失われたわけではないので、注意して使用してください。

古い提案の削除

バージョン 3.7 で追加.

アドオン ID

weblate.removal.suggestions

設定

age

保存日数

votes

投票数のしきい値

削除のしきい値を指定します。このフィールドは、投票ができない設定の場合は無効です。

トリガー

daily

提案を削除するまでの期間を設定します。

与えられた時間枠内に必要な賛成票を獲得できなかった提案への投票(参照: 相互評価)を削除するのに大変便利です。

RESX ファイルの更新

バージョン 3.9 で追加.

アドオン ID

weblate.resx.update

設定

このアドオンには設定はありません。

トリガー

リポジトリ post-update

すべての翻訳ファイルを、上流にあるモノリンガル用の基礎となる翻訳ファイルと整合するように更新します。使われない文字列は削除され、新しい文字列は原文をコピーして追加されます。

ヒント

古い翻訳キーのみを削除する場合は、翻訳ファイルのクリーンアップ を使用します。

Customize XML output

バージョン 4.15 で追加.

アドオン ID

weblate.xml.customize

設定

closing_tags

Include closing tag for blank XML tags

トリガー

ストレージ post-load

Allows adjusting XML output behavior, for example closing tags instead of self- closing tags for empty tags.

YAML 出力形式のカスタマイズ

バージョン 3.10.2 で追加.

アドオン ID

weblate.yaml.customize

設定

indent

YAML 形式のインデント

width

長い行を折り返す

設定できる値:

80 -- 80 文字で改行

100 -- 100 文字で改行

120 -- 120 文字で改行

180 -- 180 文字で改行

65535 -- 行を折り返さない

line_break

改行コード

設定できる値:

dos -- DOS (\r\n)

unix -- UNIX (\n)

mac -- MAC (\r)

トリガー

ストレージ post-load

行の長さや改行など、YAML 出力形式の変更ができます。

アドオン一覧のカスタマイズ

アドオンの一覧は WEBLATE_ADDONS で設定します。アドオンを追加するには、設定に絶対クラス名を含めるだけです。

アドオンの作成

独自のアドオンも作成できます。サブクラス weblate.addons.base.BaseAddon を作成してアドオンのメタデータを定義し、処理を行うコールバックを実装します。

アドオンから実行するスクリプト

アドオンは、外部スクリプトを実行するためにも使用できます。以前は Weblate に統合されていましたが、現在はスクリプトをアドオンでラップするコードの記述が必要です。

#
# Copyright © 2012–2022 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Example pre commit script."""


from django.utils.translation import gettext_lazy as _

from weblate.addons.events import EVENT_PRE_COMMIT
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events = (EVENT_PRE_COMMIT,)
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long descrption
    verbose = _("Execute script before commit")
    description = _("This add-on executes a script.")

    # Script to execute
    script = "/bin/true"
    # File to add in commit (for pre commit event)
    # does not have to be set
    add_file = "po/{{ language_code }}.po"

インストールの方法は 品質検査、アドオン、自動修正のカスタマイズ を確認してください。

スクリプトは、指定したコンポーネントの VCS リポジトリのルートを、カレント ディレクトリとして実行されます。

さらに利用可能な環境変数:

WL_VCS

使用中のバージョン管理システム。

WL_REPO

アップストリーム リポジトリの URL。

WL_PATH

VCS リポジトリへの絶対パス。

WL_BRANCH

バージョン 2.11 で追加.

現在のコンポーネントに設定したリポジトリのブランチ。

WL_FILEMASK

現在のコンポーネントのファイルマスク。

WL_TEMPLATE

モノリンガル翻訳用のテンプレートのファイル名(空欄でも可)。

WL_NEW_BASE

バージョン 2.14 で追加.

新しい翻訳の作成用のファイル名(空欄でも可)。

WL_FILE_FORMAT

現在のコンポーネントで使用するファイル形式。

WL_LANGUAGE

現在実行中の翻訳言語(コンポーネント レベルのフックでは使用できません)。

WL_PREVIOUS_HEAD

更新前の HEAD(更新後のフックを実行した後にのみ利用可能)。

WL_COMPONENT_SLUG

バージョン 3.9 で追加.

コンポーネント URL の設定時に使用するスラッグ。

WL_PROJECT_SLUG

バージョン 3.9 で追加.

プロジェクト URL の設定時に使用するスラッグ。

WL_COMPONENT_NAME

バージョン 3.9 で追加.

コンポーネント名。

WL_PROJECT_NAME

バージョン 3.9 で追加.

プロジェクト名。

WL_COMPONENT_URL

バージョン 3.9 で追加.

コンポーネント URL。

WL_ENGAGE_URL

バージョン 3.9 で追加.

プロジェクト参加 URL。

更新後のリポジトリ処理

VCS のアップストリーム ソースが変更されたときに翻訳ファイルを更新するために使用できます。これを実現するには、 Weblate は VCS にコミットされたファイルだけを確認するので、スクリプトの一部として変更をコミットすることが必要であることに注意してください。

Gulp による実行例:

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

翻訳のコミット前処理

コミット スクリプトを使用して、翻訳文をリポジトリにコミットする前に、翻訳文を自動的に変更します。

これには、唯一の引数として現在の翻訳のファイル名が渡されます。