検査と修正
自動修正のカスタマイズ
標準の自動修正に、独自の修正も追加できます。AUTOFIX_LIST
内に記述します。
自動修正は強力ですが、翻訳を破壊することもあります; 記述するときには注意が必要です。
翻訳内のすべての文字列 foo
を bar
に置き換える自動修正の例:
#
# 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-format
Java 形式 の品質検査を有効にする。
java-messageformat
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
Adjust checks behavior to be case-insensitive. Currently affects only プレースホルダー quality check.
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 形式 の品質検査を除外する。
ignore-java-messageformat
Java MessageFormat の品質検査を除外する。
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
Unpluralised の品質検査を除外する。
注釈
基本的に、規則は名前に ignore-*
という識別子がすべての検査に対して付いているため、独自の検査項目にも使用できます。
このフラグは、コンポーネント構成 、原文ごとの設定、および翻訳ファイル自体(例: GNU gettext)の両方で認識されます。
検査の強制
バージョン 3.11 で追加.
You can configure a list of checks which can not be ignored by setting 検査の強制 in コンポーネント構成. Each listed check can not be dismissed in the user interface and any string failing this check is marked as Needs editing (see 翻訳文の状態).
フォントの管理
バージョン 3.7 で追加.
ヒント
Weblate にアップロードしたフォントは、 翻訳の文字の最大サイズ 検査のためだけに使用します。Weblate のユーザーインターフェイスには影響しません。
表示したテキストのサイズの計算に使用する 翻訳の文字の最大サイズ 検査は、フォントを Weblate に読み込み、翻訳フラグ(参照: フラグを使用した動作の設定)を使用して選択することが必要です。
翻訳プロジェクトの 管理 メニュー下の フォント にあるフォント管理ツールは、フォントのアップロードと管理のためのインターフェイスを提供します。TrueTypeとOpenTypeフォントがアップロードできるので、フォントグループを設定して検査で使用してください。
フォントグループを使用すると、言語ごとに異なるフォントを定義できます。通常、ラテン言語以外で必要です:
フォントグループは名前で識別し、名前には空白文字や特殊文字を含めることはできません。そこで、簡単に選択して使用する方法:
フォントファミリーとスタイルは、アップロード後に自動的に認識:
Weblate に登録できる複数のフォントの設定:
文字列の長さを確認するためにフォントを使用するには、適切なフラグ(参照 フラグを使用した動作の設定)を渡します。設定が必要な項目:
max-size:500
最大幅をピクセル単位で設定。
font-family:ubuntu
使用するフォントグループの識別子の設定。
font-size:22
フォントサイズをピクセル単位で設定。
独自の検査項目の作成
幅広い品質検査を搭載していますが(参照: 品質検査)、検査したい項目をすべて網羅しているとは限りません。実行する検査の内容は、CHECK_LIST
で設定できます。また、独自の検査も追加できます。
weblate.checks.Check をサブクラス化する
複数の属性を設定する。
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