検査と修正

自動修正のカスタマイズ

標準の自動修正に、独自の修正も追加できます。AUTOFIX_LIST 内に記述します。

自動修正は強力ですが、翻訳を破壊することもあります;  記述するときには注意が必要です。

翻訳内のすべての文字列 foobar に置き換える自動修正の例:

#
# 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/>.
#

from django.utils.translation import gettext_lazy as _

from weblate.trans.autofixes.base import AutoFix


class ReplaceFooWithBar(AutoFix):
    """Replace foo with bar."""

    name = _("Foobar")

    def fix_single_target(self, target, source, unit):
        if "foo" in target:
            return target.replace("foo", "bar"), True
        return target, False

独自の自動修正を組み込むには、AUTOFIX_LIST 内で Python クラスへの完全修飾パスを指定します。参照: 品質検査、アドオン、自動修正のカスタマイズ

フラグを使用した動作の設定

フラグを使用して、Weblate の動作を調整できます。これは、原文の段階(参照: 原文の追加情報)、または コンポーネント構成翻訳フラグ)で詳細に設定できます。ファイル フォーマットの中には、フラグを直接フォーマットで指定できるものもあります(参照: 対応するファイル形式)。

フラグはカンマで、パラメーターはコロンで区切ります。引用符を使用して、文字列に空白または特殊文字を含めることができます。設定例:

placeholders:"special:value":"other value", regex:.*

一重引用符と二重引用符の両方を使用でき、特殊文字はバックスラッシュを使用してエスケープされます。

placeholders:"quoted \"string\"":'single \'quoted\''

現在、使用可能なフラグ一覧:

rst-text

テキストを reStructuredText 文書として扱う。関連項目: 未翻訳の翻訳文

dos-eol

UNIX の代わりに DOS の改行コードを使用する(\n の代わりに \r\n)。

read-only

文字列は翻訳禁止であり Weblate で編集させない。参照: 翻訳禁止の文字列

priority:N

文字列の優先度。優先度の高い文字列が翻訳のために先に表示されます。デフォルトの優先度は 100 で、文字列の優先度が高いほど、翻訳のために早く提示されます。

max-length:N

文字列の最大長を N 文字に制限する。参照: 翻訳の最大文字数

xml-text

テキストを XML ドキュメントとして扱う、関連項目: XML 構文 および XML マークアップ

font-family:NAME

レンダリングの検査に使用するフォントファミリーを定義する。参照: フォントの管理

font-weight:WEIGHT

レンダリングの検査に使用するフォントの太さを定義する。参照: フォントの管理

font-size:SIZE

レンダリングの検査に使用するフォントサイズを定義する。参照: フォントの管理

font-spacing:SPACING

レンダリングの検査に使用する文字間隔を定義する。参照: フォントの管理

icu-flags:FLAGS

ICU MessageFormat の品質検査の動作をカスタマイズするためのフラグを定義します。

icu-tag-prefix:PREFIX

ICU MessageFormat の品質検査用の XML タグに必要な接頭辞を設定します。

placeholders:NAME:NAME2:...

翻訳にはプレースホルダー文字列が必要です。参照: プレースホルダー

replacements:FROM:TO:FROM2:TO2...

テキストがパラメータとなる検査(例 翻訳の文字の最大サイズ または 翻訳の最大文字数)をするときに行う置換。一般的な使用方法は、プレースホルダに長いテキストが入ってもスペースに収まるか確認することです。例: replacements:%s:"John Doe"

variants:SOURCE

この文字列を、原文と一致する文字列の別表記としてマークします。参照: 文字列の別表記

regex:REGEX

翻訳文が一致するべき正規表現。参照: 正規表現

禁止

用語集で、使ってはいけない訳語を示します。参照: 使用を禁止する訳語

strict-same

「未翻訳の翻訳」検査で、組み込みのブラックリストの単語を除外しないようにする。参考: 未翻訳の翻訳文

check-glossary

用語集に従っていない の品質検査を有効にする。

angularjs-format

AngularJS 補間文字列 の品質検査を有効にする。

c-format

C 言語書式 の品質検査を有効にする。

c-sharp-format

C# 形式 の品質検査を有効にする。

es-format

ECMAScript テンプレート リテラル の品質検査を有効にする。

i18next-interpolation

i18next 補間 の品質検査を有効にする。

icu-message-format

ICU MessageFormat の品質検査を有効にする。

java-printf-format

Java 形式 の品質検査を有効にする。

java-format

Java MessageFormat の品質検査を有効にする。

javascript-format

JavaScript 形式 の品質検査を有効にする。

lua-format

Lua 形式 の品質検査を有効にする。

object-pascal-format

Object Pascal 形式 の品質検査を有効にする。

percent-placeholders

パーセントのプレースホルダー の品質検査を有効にする。

perl-format

Perl 形式 の品質検査を有効にする。

php-format

PHP 形式 の品質検査を有効にする。

python-brace-format

Python ブレース形式 の品質検査を有効にする。

python-format

Python 形式 の品質検査を有効にする。

qt-format

Qt 形式 の品質検査を有効にする。

qt-plural-format

Qt 複数形式 の品質検査を有効にする。

ruby-format

Ruby 形式 の品質検査を有効にする。

scheme-format

Scheme 形式 の品質検査を有効にする。

vue-format

Vue I18n 書式 の品質検査を有効にする。

md-text

テキストを Markdown ドキュメントとして扱う。Markdown のリンクMarkdown の参照 および Markdown 構文 の品質検査を有効にする。

case-insensitive

検査において、大文字と小文字を区別しないように設定します。現在は、プレースホルダー 品質検査のみに影響します。

safe-html

安全でない HTML の品質検査を有効にする。

url

文字列は URL のみでなければならない。URL の品質検査を有効にする。

ignore-all-checks

すべての品質検査を除外する。

ignore-bbcode

BBCode マークアップ の品質検査を除外する。

ignore-duplicate

重複単語の連続 の品質検査を除外する。

ignore-check-glossary

用語集に従っていない の品質検査を除外する。

ignore-double-space

連続スペース の品質検査を除外する。

ignore-angularjs-format

AngularJS 補間文字列 の品質検査を除外する。

ignore-c-format

C 言語書式 の品質検査を除外する。

ignore-c-sharp-format

C# 形式 の品質検査を除外する。

ignore-es-format

ECMAScript テンプレート リテラル の品質検査を除外する。

ignore-i18next-interpolation

i18next 補間 の品質検査を除外する。

ignore-icu-message-format

ICU MessageFormat の品質検査を除外する。

ignore-java-format

Java MessageFormat の品質検査を除外する。

ignore-java-printf-format

Java 形式 の品質検査を除外する。

ignore-javascript-format

JavaScript 形式 の品質検査を除外する。

ignore-lua-format

Lua 形式 の品質検査を除外する。

ignore-object-pascal-format

Object Pascal 形式 の品質検査を除外する。

ignore-percent-placeholders

パーセントのプレースホルダー の品質検査を除外する。

ignore-perl-format

Perl 形式 の品質検査を除外する。

ignore-php-format

PHP 形式 の品質検査を除外する。

ignore-python-brace-format

Python ブレース形式 の品質検査を除外する。

ignore-python-format

Python 形式 の品質検査を除外する。

ignore-qt-format

Qt 形式 の品質検査を除外する。

ignore-qt-plural-format

Qt 複数形式 の品質検査を除外する。

ignore-ruby-format

Ruby 形式 の品質検査を除外する。

ignore-scheme-format

Scheme 形式 の品質検査を除外する。

ignore-vue-format

Vue I18n 書式 の品質検査を除外する。

ignore-translated

過去に翻訳済み の品質検査を除外する。

ignore-inconsistent

一貫性の欠如 の品質検査を除外する。

ignore-kashida

Kashida 文字の使用 の品質検査を除外する。

ignore-md-link

Markdown のリンク の品質検査を除外する。

ignore-md-reflink

Markdown の参照 の品質検査を除外する。

ignore-md-syntax

Markdown 構文 の品質検査を除外する。

ignore-max-length

翻訳の最大文字数 の品質検査を除外する。

ignore-max-size

翻訳の文字の最大サイズ の品質検査を除外する。

ignore-escaped-newline

\n の不一致 の品質検査を除外する。

ignore-end-colon

コロンの不一致 の品質検査を除外する。

ignore-end-ellipsis

省略記号の不一致 の品質検査を除外する。

ignore-end-exclamation

感嘆符の不一致 の品質検査を除外する。

ignore-end-stop

終止符の不一致 の品質検査を除外する。

ignore-end-question

疑問符の不一致 の品質検査を除外する。

ignore-end-semicolon

セミコロンの不一致 の品質検査を除外する。

ignore-newline-count

改行数の不一致 の品質検査を除外する。

ignore-plurals

複数形の不足 の品質検査を除外する。

ignore-placeholders

プレースホルダー の品質検査を除外する。

ignore-punctuation-spacing

句読点のスペース の品質検査を除外する。

ignore-regex

正規表現 の品質検査を除外する。

ignore-same-plurals

同一の複数形 の品質検査を除外する。

ignore-begin-newline

文頭の改行 の品質検査を除外する。

ignore-begin-space

先頭の空白 の品質検査を除外する。

ignore-end-newline

文末の改行 の品質検査を除外する。

ignore-end-space

文末の空白 の品質検査を除外する。

ignore-same

未翻訳の翻訳文 の品質検査を除外する。

ignore-safe-html

安全でない HTML の品質検査を除外する。

ignore-url

URL の品質検査を除外する。

ignore-xml-tags

XML マークアップ の品質検査を除外する。

ignore-xml-invalid

XML 構文 の品質検査を除外する。

ignore-zero-width-space

ゼロ幅スペース の品質検査を除外する。

ignore-ellipsis

省略記号 の品質検査を除外する。

ignore-icu-message-format-syntax

ICU MessageFormat syntax の品質検査を除外する。

ignore-long-untranslated

長期間未翻訳 の品質検査を除外する。

ignore-multiple-failures

検査不合格となった複数の項目 の品質検査を除外する。

ignore-unnamed-format

複数の無名変数 の品質検査を除外する。

ignore-optional-plural

複数形化されていない の品質検査を除外する。

注釈

基本的に、規則は名前に ignore-* という識別子がすべての検査に対して付いているため、独自の検査項目にも使用できます。

このフラグは、コンポーネント構成 、原文ごとの設定、および翻訳ファイル自体(例: GNU gettext)の両方で認識されます。

検査の強制

バージョン 3.11 で追加.

コンポーネント構成検査の強制 を設定することで、無効にできない検査項目を設定できます。設定した検査項目は、ユーザーインターフェイスで除外にできず、検査で不合格となった文字列は 要編集 (参照: 翻訳文の状態)と設定されます。

注釈

検査の強制を有効にしても、自動的に有効とはなりません。検査を有効にするには、文字列またはコンポーネントのフラグに対応するフラグを追加してください。

フォントの管理

バージョン 3.7 で追加.

ヒント

Weblate にアップロードしたフォントは、 翻訳の文字の最大サイズ 検査のためだけに使用します。Weblate のユーザーインターフェイスには影響しません。

表示したテキストのサイズの計算に使用する 翻訳の文字の最大サイズ 検査は、フォントを Weblate に読み込み、翻訳フラグ(参照: フラグを使用した動作の設定)を使用して選択することが必要です。

翻訳プロジェクトの 管理 メニュー下の フォント にあるフォント管理ツールは、フォントのアップロードと管理のためのインターフェイスを提供します。TrueTypeとOpenTypeフォントがアップロードできるので、フォントグループを設定して検査で使用してください。

フォントグループを使用すると、言語ごとに異なるフォントを定義できます。通常、ラテン言語以外で必要です:

../_images/font-group-edit.png

フォントグループは名前で識別し、名前には空白文字や特殊文字を含めることはできません。そこで、簡単に選択して使用する方法:

../_images/font-group-list.png

フォントファミリーとスタイルは、アップロード後に自動的に認識:

../_images/font-edit.png

Weblate に登録できる複数のフォントの設定:

../_images/font-list.png

文字列の長さを確認するためにフォントを使用するには、適切なフラグ(参照 フラグを使用した動作の設定)を渡します。設定が必要な項目:

max-size:500

最大幅をピクセル単位で設定。

font-family:ubuntu

使用するフォントグループの識別子の設定。

font-size:22

フォントサイズをピクセル単位で設定。

独自の検査項目の作成

幅広い品質検査を搭載していますが(参照: 品質検査)、検査したい項目をすべて網羅しているとは限りません。実行する検査の内容は、CHECK_LIST で設定できます。また、独自の検査も追加できます。

  1. weblate.checks.Check をサブクラス化する

  2. 複数の属性を設定する。

  3. check (コードで複数形を扱う場合)または check_single メソッド(これはあなたに代わって実行)を実装する。

複数の例:

独自の検査項目を組み込むには、CHECK_LIST に Python クラスへの完全修飾パスを指定します。参照: 品質検査、アドオン、自動修正のカスタマイズ

翻訳テキストに「foo」が含まれていないかの確認

これは非常に単純な検査であり、翻訳に文字列「foo」を含まないかの検査をするだけです。

#
# 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/>.
#
"""Simple quality check example."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class FooCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_single(self, source, target, unit):
        return "foo" in target

チェコ語の翻訳文の複数形が異なっているかの確認

言語情報を使用して、チェコ語の 2 つの複数形が同じでないことを検査します。

#
# 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/>.
#
"""Quality check example for Czech plurals."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class PluralCzechCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_target_unit(self, sources, targets, unit):
        if self.is_language(unit, ("cs",)):
            return targets[1] == targets[2]
        return False

    def check_single(self, source, target, unit):
        """We don't check target strings here."""
        return False