アドオン

バージョン 2.19 で追加.

アドオンを使用すると、翻訳ワークフローをカスタマイズできます。アドオンは翻訳コンポーネント画面にインストールして、バックグラウンドで動作します。アドオン管理は、管理者用の各翻訳コンポーネントの 管理アドオン メニューから実行します。

../_images/addons.png

内蔵アドオン

自動翻訳

バージョン 3.9 で追加.

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

このアドオンは、コンポーネントに新しい文字列が表示されると自動的に起動します。

JavaScript 現地語化 CDN

バージョン 4.2 で追加.

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

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

アドオンをインストールすると、コンポーネント専用の URL が生成されます。この URL を HTML ドキュメントに含めると、コンポーネントを現地語化できます。詳細は Translating HTML and JavaScript using Weblate CDN を参照してください。

空白文字列の削除

バージョン 4.4 で追加.

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

空の文字列を翻訳ファイルに表示させたくない場合(例えば、翻訳ライブラリで原文にフォールバックさせるのではなく、空の文字列として表示させる場合)に使用します。

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

単一言語の基本ファイルに合わせてすべての翻訳ファイルを更新します。ほとんどのファイル形式で、基本ファイルに存在しない、無効な翻訳キーを削除します。

言語の一貫性

1 つのプロジェクト内のすべてのコンポーネントに、追加されたすべての言語の翻訳を適用します。

コンポーネントを追加していない言語では、空の翻訳を作成します。

存在しない言語は、24 時間ごとに 1 回、および新しい言語を Weblate に追加したときに確認します。

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

ヒント

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

コンポーネントの検出

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

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

今後消える可能性が最も低いメイン コンポーネントを 1 つ作成します。他のコンポーネントは、Weblate の内部 URL を VCS 設定として使用し、その中のすべてのコンポーネントを検索するように設定します。

コンポーネントの照合は正規表現を使用するが、この場合、性能は設定の複雑さとトレードオフになります。一般的な使用例については、アドオンのヘルプ セクションを参照してください。

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

../_images/addon-discovery.png

一括編集

バージョン 3.11 で追加.

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

新しい文字列のラベル付けを自動化すると便利です (まず NOT has:label という検索クエリから開始し、すべての文字列に適切なラベルが付けられるまで必要なラベルを追加します)。Weblate メタデータに対するその他の自動操作も実行できます。

例:

新しい文字列に自動的にラベルを追加

検索クエリ

NOT has:label

ラベルの追加

最近の

すべての アプリ ストア メタデータ ファイル 変更ログ エントリを読み取り専用にマークする

検索クエリ

language:en AND key:changelogs/

翻訳フラグの追加

read-only

参考

一括編集

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

バージョン 3.1 で追加.

VCS からインポートされた新しい翻訳可能な文字列が原文と一致するたびに、Weblate は "要編集" フラグを付けます。これは、文字列が翻訳されていない場合であっても、すべての文字列を含むファイル形式には特に便利です。

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

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

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

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

統計データの生成

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

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

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

生成ファイルの名前

locale/{{ language_code }}.json

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

コメント内の貢献者情報

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 変数の更新

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

gettext 出力のカスタマイズ

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

使用できるオプション:

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

  • 改行文字でのみ折り返し

  • 折り返ししない

注釈

デフォルトでは、gettext は 77 文字を超えた場合や改行文字がある場合に折り返しします。--no-wrap パラメータを指定すると、改行文字でのみ折り返しします。

LINGUAS ファイルの更新

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

MO ファイルの生成

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

MO ファイルが生成される場所はカスタマイズでき、フィールドは Template markup を使用します。

POT に一致する PO ファイルの更新 (msgmerge)

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

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

Git コミットをスカッシュ

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

選択できるモード:

バージョン 3.4 で追加.

  • すべてのコミットを 1 つにまとめる

  • 言語別

  • ファイル別

バージョン 3.5 で追加.

  • 翻訳者別

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

バージョン 4.1 で追加.

元々のコミット メッセージは、オプションで独自のコミット メッセージに上書きできます。

翻訳者情報( Co-authored-by: ...)は、オプションで元々のコミット メッセージから削除し、簡略化したコミット メッセージの末尾に追加できます。また、これはすべての翻訳者に対して適切な 共同翻訳者: の明記を生成します。

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

インデント処理や並べ替えなど、JSON 出力形式を調整できます。

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

Java プロパティ ファイルをソートします。

古いコメントの削除

バージョン 3.7 で追加.

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

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

古い提案の削除

バージョン 3.7 で追加.

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

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

RESX ファイルの更新

バージョン 3.9 で追加.

アップストリームの単一言語の基本ファイルに合わせて、すべての翻訳ファイルを更新します。使われていない文字列は削除し、新しい文字列は原文のコピーとして追加します。

ヒント

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

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

バージョン 3.10.2 で追加.

行の長さや改行など、YAML 出力の動作を調整できます。

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

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

Writing addon

You can write your own addons too, all you need to do is subclass weblate.addons.base.BaseAddon, define the addon metadata and implement a callback which will do the processing.

Executing scripts from addon

Addons can also be used to execute external scripts. This used to be integrated in Weblate, but now you have to write some code to wrap your script with an addon.

#
# Copyright © 2012 - 2021 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 addon 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"

For installation instructions see 品質検査、アドオン、自動修正のカスタマイズ.

The script is executed with the current directory set to the root of the VCS repository for any given component.

Additionally, the following environment variables are available:

WL_VCS

Version control system used.

WL_REPO

Upstream repository URL.

WL_PATH

Absolute path to VCS repository.

WL_BRANCH

バージョン 2.11 で追加.

Repository branch configured in the current component.

WL_FILEMASK

Filemask for current component.

WL_TEMPLATE

Filename of template for monolingual translations (can be empty).

WL_NEW_BASE

バージョン 2.14 で追加.

Filename of the file used for creating new translations (can be empty).

WL_FILE_FORMAT

Fileformat used in current component.

WL_LANGUAGE

Language of currently processed translation (not available for component level hooks).

WL_PREVIOUS_HEAD

Previous HEAD on update (available only when running post update hook).

WL_COMPONENT_SLUG

バージョン 3.9 で追加.

Component slug used to construct URL.

WL_PROJECT_SLUG

バージョン 3.9 で追加.

Project slug used to construct URL.

WL_COMPONENT_NAME

バージョン 3.9 で追加.

Component name.

WL_PROJECT_NAME

バージョン 3.9 で追加.

Project name.

WL_COMPONENT_URL

バージョン 3.9 で追加.

Component URL.

WL_ENGAGE_URL

バージョン 3.9 で追加.

Project engage URL.

Post update repository processing

Post update repository processing can be used to update translation files when the VCS upstream source changes. To achieve this, please remember that Weblate only sees files committed to the VCS, so you need to commit changes as a part of the script.

For example with Gulp you can do it using following code:

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

Pre commit processing of translations

Use the commit script to automatically make changes to the translation before it is committed to the repository.

It is passed as a single parameter consisting of the filename of a current translation.