検査と修正
自動修正のカスタマイズ
標準の自動修正に、独自の修正も追加できます。AUTOFIX_LIST
内に記述します。
自動修正は強力ですが、翻訳を破壊することもあります; 記述するときには注意が必要です。
例えば、次の自動修正は、翻訳内のすべての文字列 foo
を bar
に置き換える:
#
# 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/>.
#
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 の動作(主に検査)は、原文(原文の査読、参照: Additional info on source strings)、または Component configuration ( 翻訳フラグ)で詳細に設定できます。ファイル フォーマットの中には、フラグを直接フォーマットで指定できるものもあります(参照: 対応するファイル形式)。
フラグはカンマで、パラメーターはコロンで区切ります。引用符を使用して、文字列に空白または特殊文字を含めることができます。設定例:
placeholders:"special:value":"other value", regex:.*
現在、使用可能なフラグ一覧:
rst-text
テキストを reStructuredText 文書として扱う。関連項目: 未翻訳の翻訳文。
dos-eol
UNIX の代わりに DOS の改行コードを使用する(
\n
の代わりに\r\n
)。read-only
文字列は読み取り専用なので Weblate で編集しない。参照: Read-only strings。
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
Define flags for customizing the behavior of the ICU MessageFormat quality check.
icu-tag-prefix:PREFIX
Set a required prefix for XML tags for the ICU MessageFormat quality check.
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
Enable the C# 形式 quality check.
es-format
Enable the ECMAScript テンプレート リテラル quality check.
i18next-interpolation
Enable the i18next 補間 quality check.
icu-message-format
Enable the ICU MessageFormat quality check.
java-format
Enable the Java 形式 quality check.
java-messageformat
Enable the Java MessageFormat quality check.
javascript-format
Enable the JavaScript 形式 quality check.
lua-format
Enable the Lua 形式 quality check.
object-pascal-format
Enable the Object Pascal 形式 quality check.
percent-placeholders
Enable the パーセントのプレースホルダー quality check.
perl-format
Enable the Perl 形式 quality check.
php-format
Enable the PHP 形式 quality check.
python-brace-format
Enable the Python ブレース形式 quality check.
python-format
Enable the Python 形式 quality check.
qt-format
Enable the Qt 形式 quality check.
qt-plural-format
Enable the Qt 複数形式 quality check.
ruby-format
Enable the Ruby 形式 quality check.
scheme-format
Enable the Scheme 形式 quality check.
vue-format
Enable the Vue I18n 書式 quality check.
md-text
Treat text as a Markdown document. Enable Markdown のリンク, Markdown の参照, and Markdown 構文 quality checks.
safe-html
Enable the 安全でない HTML quality check.
url
The string should consist of only a URL. Enable the URL quality check.
ignore-bbcode
Skip the BBcode マークアップ quality check.
ignore-duplicate
Skip the 重複単語の連続 quality check.
ignore-check-glossary
Skip the 用語集に従っていない quality check.
ignore-double-space
Skip the 連続スペース quality check.
ignore-angularjs-format
Skip the AngularJS 補間文字列 quality check.
ignore-c-format
Skip the C 言語書式 quality check.
ignore-c-sharp-format
Skip the C# 形式 quality check.
ignore-es-format
Skip the ECMAScript テンプレート リテラル quality check.
ignore-i18next-interpolation
Skip the i18next 補間 quality check.
ignore-icu-message-format
Skip the ICU MessageFormat quality check.
ignore-java-format
Skip the Java 形式 quality check.
ignore-java-messageformat
Skip the Java MessageFormat quality check.
ignore-javascript-format
Skip the JavaScript 形式 quality check.
ignore-lua-format
Skip the Lua 形式 quality check.
ignore-object-pascal-format
Skip the Object Pascal 形式 quality check.
ignore-percent-placeholders
Skip the パーセントのプレースホルダー quality check.
ignore-perl-format
Skip the Perl 形式 quality check.
ignore-php-format
Skip the PHP 形式 quality check.
ignore-python-brace-format
Skip the Python ブレース形式 quality check.
ignore-python-format
Skip the Python 形式 quality check.
ignore-qt-format
Skip the Qt 形式 quality check.
ignore-qt-plural-format
Skip the Qt 複数形式 quality check.
ignore-ruby-format
Skip the Ruby 形式 quality check.
ignore-scheme-format
Skip the Scheme 形式 quality check.
ignore-vue-format
Skip the Vue I18n 書式 quality check.
ignore-translated
Skip the 翻訳済み quality check.
ignore-inconsistent
Skip the 一貫性の欠如 quality check.
ignore-kashida
Skip the Kashida 文字の使用 quality check.
ignore-md-link
Skip the Markdown のリンク quality check.
ignore-md-reflink
Skip the Markdown の参照 quality check.
ignore-md-syntax
Skip the Markdown 構文 quality check.
ignore-max-length
Skip the 翻訳の最大文字数 quality check.
ignore-max-size
Skip the 翻訳の文字の最大サイズ quality check.
ignore-escaped-newline
Skip the \n の不一致 quality check.
ignore-end-colon
Skip the コロンの不一致 quality check.
ignore-end-ellipsis
Skip the 省略記号の不一致 quality check.
ignore-end-exclamation
Skip the 感嘆符の不一致 quality check.
ignore-end-stop
Skip the 終止符の不一致 quality check.
ignore-end-question
Skip the 疑問符の不一致 quality check.
ignore-end-semicolon
Skip the セミコロンの不一致 quality check.
ignore-newline-count
Skip the 改行数の不一致 quality check.
ignore-plurals
Skip the 複数形の不足 quality check.
ignore-placeholders
Skip the プレースホルダー quality check.
ignore-punctuation-spacing
Skip the 句読点のスペース quality check.
ignore-regex
Skip the 正規表現 quality check.
ignore-same-plurals
Skip the 同一の複数形 quality check.
ignore-begin-newline
Skip the 文頭の改行 quality check.
ignore-begin-space
Skip the 先頭の空白 quality check.
ignore-end-newline
Skip the 文末の改行 quality check.
ignore-end-space
Skip the 文末の空白 quality check.
ignore-same
Skip the 未翻訳の翻訳文 quality check.
ignore-safe-html
Skip the 安全でない HTML quality check.
ignore-url
Skip the URL quality check.
ignore-xml-tags
Skip the XML マークアップ quality check.
ignore-xml-invalid
Skip the XML 構文 quality check.
ignore-zero-width-space
Skip the ゼロ幅スペース quality check.
ignore-ellipsis
Skip the 省略記号 quality check.
ignore-icu-message-format-syntax
Skip the ICU MessageFormat syntax quality check.
ignore-long-untranslated
Skip the 長期間未翻訳 quality check.
ignore-multiple-failures
Skip the 複数の検査で不合格 quality check.
ignore-unnamed-format
Skip the 複数の無名変数 quality check.
ignore-optional-plural
Skip the 複数形になっていない quality check.
注釈
基本的に、規則は名前に ignore-*
という識別子がすべての検査に対して付いているため、独自の検査にも使用できます。
このフラグは、Component configuration 、原文ごとの設定、および翻訳ファイル自体(例: GNU gettext)の両方で認識されます。
検査の強制
バージョン 3.11 で追加.
Component configuration で 検査の強制 を設定することで、無効にできない検査項目を設定できます。設定した検査項目は、ユーザーインターフェイスで除外にできず、検査で不合格となった文字列は 要編集 (参照: Translation states)と設定されます。
フォントの管理
バージョン 3.7 で追加.
ヒント
Weblate にアップロードしたフォントは、 翻訳の文字の最大サイズ 検査のためだけに使用します。Weblate のユーザーインターフェイスには影響しません。
表示したテキストのサイズの計算に使用する 翻訳の文字の最大サイズ 検査は、フォントを Weblate に読み込み、翻訳フラグ(参照: フラグを使用した動作の設定)を使用して選択することが必要です。
翻訳プロジェクトの 管理 メニュー下の フォント にあるフォント管理ツールは、フォントのアップロードと管理のためのインターフェイスを提供します。TrueTypeとOpenTypeフォントがアップロードできるので、フォントグループを設定して検査で使用してください。
フォントグループを使用すると、言語ごとに異なるフォントを定義できます。通常、ラテン言語以外で必要です:

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

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

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

文字列の長さを確認するためにフォントを使用するには、適切なフラグ(参照 フラグを使用した動作の設定)を渡します。設定が必要な項目:
max-size:500
Defines maximal width in pixels.
font-family:ubuntu
使用するフォント グループの識別子の設定。
font-size:22
Defines font size in pixels.
独自検査の記述
幅広い品質検査を標準搭載していますが(参照: 品質検査)、検査したい項目をすべて網羅しているとは限りません。実行する検査の内容は、CHECK_LIST
で設定できます。また、独自の検査も追加できます。
weblate.checks.Check をサブクラス化する
複数の属性を設定する。
check
(コードで複数形を扱う場合)またはcheck_single
メソッド(これはあなたに代わって実行)を実装する。
複数の例:
独自の検査を組み込むには、CHECK_LIST
に Python クラスへの完全修飾パスを指定します。参照: 品質検査、アドオン、自動修正のカスタマイズ。
翻訳テキストに「foo」が含まれていないかの確認
これは非常に単純な検査であり、翻訳に文字列「foo」を含まないかの検査をするだけです。
#
# 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/>.
#
"""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 - 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/>.
#
"""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