検査と修正#
品質検査は、一般的な翻訳ミスを発見しやすくして、翻訳が整形された状態であることを保証します。誤検出の場合は、その検査を除外にできます。
保存した翻訳が検査で不合格となった場合に、すぐにユーザーに警告を表示します。表示例:

自動修正#
品質検査 に加えて、Weblate は翻訳した文字列の一般的な翻訳ミスを自動的に修正できます。翻訳ミスを誘発しないよう設定には注意をしてください。
参考
文末の省略記号の置き換え#
原文と一致するように、末尾のドット(...
)を省略記号(…
)に置き換えます。
ゼロ幅スペースの削除#
通常、ゼロ幅のスペースは、翻訳には不要です。この修正により、原文の文字列にも存在しない限り、ゼロ幅のスペースが削除されます。
制御文字の削除#
翻訳から制御文字を削除します。
デーヴァナーガリー文字のダンダ句読点#
デーバナーガリー文字の間違ったピリオドを、デーバナーガリー文字のダンダ句読点(।
)に置き換えます。
安全でない HTML のクリーンアップ#
safe-html
フラグを有効にすると、HTML マークアップがサニタイズされます。
参考
文頭と文末の空白の修正#
先頭と末尾の空白を原文と一致させます。この処理は、ignore-begin-space
および ignore-end-space
フラグを使用して、文字列の処理部分を省略するように設定します。
品質検査#
Weblate では、文字列に対してさまざまな品質検査をしています。次のセクションでは、すべての検査項目について詳しく説明します。言語固有の検査もあります。誤検出が起こる場合はバグを報告してください。
翻訳時の検査#
翻訳文を変更するたびに検査をするため、翻訳者は高品質な翻訳を維持できます。
BBCode マークアップ#
- 概要:
翻訳文の BBCode が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.BBCodeCheck
- 検査の識別子:
bbcode
- 除外フラグ:
ignore-bbcode
BBCode は、メッセージの重要な部分を太字フォントや斜体で強調するなどの表示を、単純なマークアップで記述します。
この検査は、BBCode が翻訳文にも含まれているかどうかを確認します。
注釈
現在、BBCode を検出する方法は非常に単純であり、この検査では誤検知が発生することがあります。
重複単語の連続#
バージョン 4.1 で追加.
- 概要:
翻訳文で同じ単語が 2 回連続した文字列:
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.duplicate.DuplicateCheck
- 検査の識別子:
duplicate
- 除外フラグ:
ignore-duplicate
翻訳文に重複する単語が連続してないか検査します。通常は、翻訳ミスです。
ヒント
この検査には、誤検出を避けるための言語固有の規則が含まれています。お客様のケースで誤作動した場合はお知らせください。参照: Weblate の問題の報告。
用語集に従っていない#
バージョン 4.5 で追加.
- 概要:
翻訳文は用語集に定義された用語に従っていない。
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.glossary.GlossaryCheck
- 検査の識別子:
check_glossary
- 有効にするフラグ:
check-glossary
- 除外フラグ:
ignore-check-glossary
この検査は、check-glossary
フラグを使用して有効にします(参照: フラグを使用した動作の設定)。有効にする前に、考慮が必要な項目:
完全一致で文字列の照合をします。用語集には、用語の別表記はすべて含まれていることが前提です。
各文字列を用語集と照合して検査するのは大変な作業です。Weblate のすべての操作、文字列のインポートや翻訳などの検査が遅くなります。
また、未翻訳の翻訳文 では用語集の翻訳禁止の用語も活用します。
連続スペース#
- 概要:
翻訳文に連続したスペースが含まれている
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.DoubleSpaceCheck
- 検査の識別子:
double_space
- 除外フラグ:
ignore-double-space
翻訳文の中でスペースが連続しているかどうかを検査し、ほかのスペース関連の検査での誤検出を防ぎます。
原文に連続したスペースがある場合は、意図的なものなので検査で不合格になりません。
Fluent パーツ#
バージョン 5.0 で追加.
- 概要:
Fluent パーツは一致することが必要です
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.fluent.parts.FluentPartsCheck
- 検査の識別子:
fluent-parts
- 有効にするフラグ:
fluent-parts
- 除外フラグ:
ignore-fluent-parts
各 Fluent メッセージにはオプションの値(メインのテキストコンテンツ)とオプションの属性が含まれ、それぞれがメッセージの「部分」です。Weblate では、これらのすべての部分が同じブロック内に表示され、属性を指定するために Fluent 風の構文が使用されます。例:
This is the Message value
.title = This is the title attribute
.alt = This is the alt attribute
この検査は、原文のメッセージに値がある場合は翻訳されたメッセージにも値があること、原文のメッセージに値がない場合は翻訳にも値がないことを確認します。また、原文のメッセージで使われている属性が翻訳にもあり、他に属性が追加されていないかも確認します。
注釈
この検査は Fluent 用語には適用されません。なぜなら、用語は常に値を持つためです。また、用語の属性はロケール固有のものであり(文法規則などで使用)、すべての翻訳に表示されることは期待されないからです。
参考
Fluent 参照#
バージョン 5.0 で追加.
- 概要:
Fluent 参照は一致することが必要です
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.fluent.references.FluentReferencesCheck
- 検査の識別子:
fluent-references
- 有効にするフラグ:
fluent-references
- 除外フラグ:
ignore-fluent-references
Fluent メッセージや用語は、他のメッセージ、用語、属性、または変数を参照できます。例:
Here is a { message }, a { message.attribute } a { -term } and a { $variable }.
Within a function { NUMBER($num, minimumFractionDigits: 2) }
一般的に、翻訳されたメッセージや用語には、ソースと同じ参照が含まれていることが求められます。ただし、必ずしも同じ順序で表示されることは必要ありません。したがって、この検査は翻訳がソースの値と同じ参照を使用し、同じ回数、追加なしで使用していることを確認します。メッセージの場合、翻訳の各属性が、ソースの対応する属性と同じ参照を使用していることも確認します。
ソースまたは翻訳に Fluent Select 式が含まれている場合、ソースの各可能な別表記の文字列は、翻訳においても同じ参照を持つ少なくとも 1 つの別表記の文字列と一致することが必要であり、その逆も同様です。
さらに、もし変数参照が選択式のセレクタ内とその別表記の文字列の 1 つ内の両方に現れる場合、その場合すべての別表記の文字列もその参照を含むかのように考えることができます。この仮定は、別表記の文字列のキーがその別表記の文字列に対してその参照を冗長にした可能性があるためです。例:
{ $num ->
[one] an apple
*[other] { $num } apples
}
ここで、この検査の目的のために、[one]
別表記は $num
参照を含むと見なされます。
ただし、選択式のセレクタ内にある参照は、Fluent の構文における用語属性の変数である場合に限ります。そのため、それ自体が必要な参照とはみなされません。なぜなら、それはエンドユーザーが実際に見るテキスト コンテンツを形成しないからです。また、選択式の存在はロケール固有と見なされます。例:
{ -term.starts-with-vowel ->
[yes] an { -term }
*[no] a { -term }
}
ここでは、-term.starts-with-vowel``への参照は翻訳には現れないことが期待されていますが、
-term`` への参照は現れることが期待されています。
Fluent 翻訳内部の HTML#
バージョン 5.0 で追加.
- 概要:
Fluent の対象は有効な内部 HTML である必要があり、一致することが必要です
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.fluent.inner_html.FluentTargetInnerHTMLCheck
- 検査の識別子:
fluent-target-inner-html
- 有効にするフラグ:
fluent-target-inner-html
- 除外フラグ:
ignore-fluent-target-inner-html
この検査は、メッセージや用語の翻訳された値が、ソースの値と同じ HTML 要素を含んでいるかどうかを検証します。
まず、ソースの値が Fluent ソース内部の HTML 検査に合格しない場合、この検査は何も行いません。それ以外の場合、翻訳された値も同じ条件の下で検査します。
次に、翻訳された値内で見つかった HTML 要素が、ソースの値内で見つかった HTML 要素と比較されます。2 つの要素は、完全に同じタグ名、同じ属性と値を共有し、すべての祖先も同じ方法で一致する場合に一致します。この検査は、ソース内のすべての要素が翻訳内のどこかに表示され、数 も同じで、追加の要素は追加されていないことを確認します。値内に複数の要素がある場合、それらは翻訳値内で同じ順序で表示される必要はありません。
ソースまたは翻訳に Fluent Select 式が含まれている場合、ソースの各可能な別表記の文字列は、翻訳においても同じ HTML 要素を持つ少なくとも 1 つの別表記の文字列と一致することが必要であり、その逆も同様です。
Fluent を Fluent DOM パッケージと組み合わせて使用する場合、この検査は翻訳にはソースに必須の data-l10n-name
要素や <br>
のような許可されたインライン要素が含まれることを確認します。
たとえば、次のソース:
Source message <img data-l10n-name="icon"/> with icon
一致する:
Translated message <img data-l10n-name="icon"/> with icon
しない:
Translated message <img data-l10n-name="new-val"/> with icon
nor
Translated message <br data-l10n-name="icon"/> with no icon
Fluent 翻訳構文#
バージョン 5.0 で追加.
- 概要:
翻訳での Fluent 構文エラー
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.fluent.syntax.FluentTargetSyntaxCheck
- 検査の識別子:
fluent-target-syntax
- 有効にするフラグ:
fluent-target-syntax
- 除外フラグ:
ignore-fluent-target-syntax
Weblate では、Fluent 文字列は、参照と別表記に Fluent 構文を使用しますが、属性やセレクタによる別表記、複数形を含む、より複雑な機能も使用できます。この検査は、翻訳で使用される構文が Fluent で有効であることを保証します。
書式指定文字列#
原文から翻訳文に文字列の書式指定が複製されているか検査します。翻訳文で書式指定文字列を省略すると、通常は深刻な問題が発生するので、文字列の書式指定は、通常は原文と一致していなければなりません。
Weblate では、複数の言語での書式指定文字列の検査に対応しています。検査は、文字列に適切なフラグが設定されている場合にのみ自動的に有効になります(例: C 形式の 'c-format')。Gettext はこれを自動的に追加しますが、他のファイル形式や PO ファイルが xgettext で生成されていない場合は、手動で追加することが必要です。
ほとんどのフォーマット検査では、単一の数を持つ複数形に対してフォーマット文字列を省略することが許可されています。これにより、翻訳者はこれらのケースに対してよりわかりやすい文字列(%d apple の代わりに One apple)を書くことができます。無効にするには、strict-format
フラグを追加してください。
フラグは、文字列ごとに変更できて(参照: 原文の追加情報)、コンポーネント構成 で行うこともできます。コンポーネントごとに定義する方が簡単ですが、文字列が書式指定文字列として解釈されず、書式指定文字列の構文がすでに使用されている場合は、誤検出が発生することがあります。
ヒント
Weblate で指定した書式指定の検査ができない場合は、汎用の プレースホルダー を使用できます。
検査に加えて、書式指定文字列をハイライトで表示して、翻訳文字列に簡単に挿入する方法:

AngularJS 補間文字列#
- 概要:
原文と AngularJS 補間文字列が一致してないもの
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.angularjs.AngularJSInterpolationCheck
- 検査の識別子:
angularjs_format
- 有効にするフラグ:
angularjs-format
- 除外フラグ:
ignore-angularjs-format
- 名前付き書式文字列の例:
Your balance is {{amount}} {{ currency }}
C 言語書式#
- 概要:
C 言語形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.CFormatCheck
- 検査の識別子:
c_format
- 有効にするフラグ:
c-format
- 除外フラグ:
ignore-c-format
- 単純な書式指定文字列の例:
There are %d apples
- 書式指定文字列の位置の例:
Your balance is %1$d %2$s
C# 形式#
- 概要:
C# 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.CSharpFormatCheck
- 検査の識別子:
c_sharp_format
- 有効にするフラグ:
c-sharp-format
- 除外フラグ:
ignore-c-sharp-format
- 書式指定文字列の位置の例:
There are {0} apples
ECMAScript テンプレート リテラル#
- 概要:
ECMAScript テンプレート リテラルが原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.ESTemplateLiteralsCheck
- 検査の識別子:
es_format
- 有効にするフラグ:
es-format
- 除外フラグ:
ignore-es-format
- 補間の例:
There are ${number} apples
i18next 補間#
バージョン 4.0 で追加.
- 概要:
i18next の補間が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.I18NextInterpolationCheck
- 検査の識別子:
i18next_interpolation
- 有効にするフラグ:
i18next-interpolation
- 除外フラグ:
ignore-i18next-interpolation
- 補間の例:
There are {{number}} apples
- ネスティングの例:
There are $t(number) apples
ICU MessageFormat#
バージョン 4.9 で追加.
- 概要:
ICU MessageFormat 文字列の構文エラーやプレースホルダーの不一致。
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.icu.ICUMessageFormatCheck
- 検査の識別子:
icu_message_format
- 有効にするフラグ:
icu-message-format
- 除外フラグ:
ignore-icu-message-format
- 補間の例:
There {number, plural, one {is one apple} other {are # apples}}.
この検査は、純粋な ICU MessageFormat メッセージと、単純な XML タグを持つ ICU の両方に対応します。XML 対応を選択するか、特定の検査の詳細を無効にすることで、 icu-flags:*
を使用してこの検査の動作を設定できます。たとえば、次のフラグは、複数のサブ メッセージの検証を無効にしながら XML 対応を有効にします。
icu-message-format, icu-flags:xml:-plural_selectors
|
単純な XML タグに対応を有効にします。デフォルトでは、XML タグは寛大に解析されます。対でない |
|
厳格な XML タグに対応を有効にします。タグの一部でない場合は、すべての |
|
エディタ内のプレースホルダーの強調表示を無効にします。 |
|
サブメッセージに |
|
サブメッセージ セレクターがソースと一致するかどうかの検査を除外します。 |
|
プレースホルダーの型が原文と一致するかどうかの検査を除外します。 |
|
原文に存在しなかったプレースホルダーが、存在しない確認の検査を除外します。 |
|
原文に存在していたプレースホルダーが、欠落していない確認の検査を除外します。 |
また、 strict-xml
が無効で xml
が有効な場合は、icu-tag-prefix:PREFIX
フラグを使用して、すべての XML タグが特定の文字列で始まることを必須にできます。次のようにフラグを設定して、XML タグが <x:
で始まる場合にのみ一致することを許可する例:
icu-message-format, icu-flags:xml, icu-tag-prefix:"x:"
これは <x:link>click here</x:link>
と一致しますが、<strong>this</strong>
とは一致しません。
Java 形式#
- 概要:
Java 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.JavaFormatCheck
- 検査の識別子:
java_printf_format
- 有効にするフラグ:
java-printf-format
- 除外フラグ:
ignore-java-printf-format
- 単純な書式指定文字列の例:
There are %d apples
- 書式指定文字列の位置の例:
Your balance is %1$d %2$s
バージョン 4.14 で変更: 以前は、java-format
フラグを使用して切り替えていましたが、GNU gettext との一貫性を保つために変更されました。
Java MessageFormat#
- 概要:
Java MessageFormat 文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.JavaMessageFormatCheck
- 検査の識別子:
java_format
- 無条件を有効にするフラグ:
java-format
- 自動検出を有効にするフラグ:
auto-java-messageformat
原文に書式指定文字列がある場合のみ検査を有効にします- 除外フラグ:
ignore-java-format
- 書式指定文字列の位置の例:
There are {0} apples
バージョン 4.14 で変更: 以前は、java-messageformat
フラグを使用して切り替えていましたが、GNU gettext との一貫性を保つために変更されました。
このチェックは、書式文字列が Java MessageFormat クラスに対して有効であることを検証します。中括弧内の書式文字列を照合するだけでなく、特別な意味を持つ単一引用符も検証します。シングル クォーテーションを書くときは常に ''
と書くべきです。対になっていない場合は、引用の始まりとして扱われ、文字列のレンダリング時に表示されません。
JavaScript 形式#
- 概要:
JavaScript 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.JavaScriptFormatCheck
- 検査の識別子:
javascript_format
- 有効にするフラグ:
javascript-format
- 除外フラグ:
ignore-javascript-format
- 単純な書式指定文字列の例:
There are %d apples
Lua 形式#
- 概要:
Lua 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.LuaFormatCheck
- 検査の識別子:
lua_format
- 有効にするフラグ:
lua-format
- 除外フラグ:
ignore-lua-format
- 単純な書式指定文字列の例:
There are %d apples
Object Pascal 形式#
- 概要:
Object Pascal 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.ObjectPascalFormatCheck
- 検査の識別子:
object_pascal_format
- 有効にするフラグ:
object-pascal-format
- 除外フラグ:
ignore-object-pascal-format
- 単純な書式指定文字列の例:
There are %d apples
パーセントのプレースホルダー#
バージョン 4.0 で追加.
- 概要:
% プレースホルダーが原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.PercentPlaceholdersCheck
- 検査の識別子:
percent_placeholders
- 有効にするフラグ:
percent-placeholders
- 除外フラグ:
ignore-percent-placeholders
- 単純な書式指定文字列の例:
リンゴが %number% 個あります
参考
Perl 形式#
- 概要:
Perl 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.PerlFormatCheck
- 検査の識別子:
perl_format
- 有効にするフラグ:
perl-format
- 除外フラグ:
ignore-perl-format
- 単純な書式指定文字列の例:
There are %d apples
- 書式指定文字列の位置の例:
Your balance is %1$d %2$s
PHP 形式#
- 概要:
PHP 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.PHPFormatCheck
- 検査の識別子:
php_format
- 有効にするフラグ:
php-format
- 除外フラグ:
ignore-php-format
- 単純な書式指定文字列の例:
There are %d apples
- 書式指定文字列の位置の例:
Your balance is %1$d %2$s
Python ブレース形式#
- 概要:
Python ブレース形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.PythonBraceFormatCheck
- 検査の識別子:
python_brace_format
- 有効にするフラグ:
python-brace-format
- 除外フラグ:
ignore-python-brace-format
- 単純な書式指定文字列:
リンゴが {} 個あります
- 名前付き書式文字列の例:
あなたの残高は {amount} {currency} です
Python 形式#
- 概要:
Python 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.PythonFormatCheck
- 検査の識別子:
python_format
- 有効にするフラグ:
python-format
- 除外フラグ:
ignore-python-format
- 単純な書式指定文字列:
There are %d apples
- 名前付き書式文字列の例:
あなたの残高は %(amount)d %(currency)s です
Qt 形式#
- 概要:
Qt 書式文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.qt.QtFormatCheck
- 検査の識別子:
qt_format
- 有効にするフラグ:
qt-format
- 除外フラグ:
ignore-qt-format
- 書式指定文字列の位置の例:
リンゴが %1 個あります
Qt 複数形式#
- 概要:
Qt 複数形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.qt.QtPluralCheck
- 検査の識別子:
qt_plural_format
- 有効にするフラグ:
qt-plural-format
- 除外フラグ:
ignore-qt-plural-format
- 複数形の書式指定文字列の例:
There are %Ln apple(s)
Ruby 形式#
- 概要:
Ruby 書式文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.ruby.RubyFormatCheck
- 検査の識別子:
ruby_format
- 有効にするフラグ:
ruby-format
- 除外フラグ:
ignore-ruby-format
- 単純な書式指定文字列の例:
There are %d apples
- 書式指定文字列の位置の例:
あなたの残高は %1$f %2$s です
- 名前付き書式文字列の例:
Your balance is %+.2<amount>f %<currency>s
- 名前付きテンプレート文字列:
Your balance is %{amount} %{currency}
Scheme 形式#
- 概要:
Scheme 形式の文字列が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.SchemeFormatCheck
- 検査の識別子:
scheme_format
- 有効にするフラグ:
scheme-format
- 除外フラグ:
ignore-scheme-format
- 単純な書式指定文字列の例:
リンゴが ~d 個あります
Vue I18n 書式#
- 概要:
Vue I18n 書式が原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.format.VueFormattingCheck
- 検査の識別子:
vue_format
- 有効にするフラグ:
vue-format
- 除外フラグ:
ignore-vue-format
- 名前付きフォーマット:
リンゴが {count} 個あります
- Rails i18n 書式:
リンゴが %{count} 個あります
- リンクしたロケールメッセージ:
@:message.dio @:message.the_world!
過去に翻訳済み#
- 概要:
過去に翻訳済みのもの
- 対象範囲:
すべての文字列
- 検査クラス:
weblate.checks.consistency.TranslatedCheck
- 検査の識別子:
translated
- 除外フラグ:
ignore-translated
文字列が以前に翻訳されていることを意味します。これは、VCS で翻訳が巻き戻された場合や、その他の理由で翻訳が失われた場合に発生します。
一貫性の欠如#
- 概要:
この文字列は、このプロジェクトで複数の翻訳があるか、コンポーネントによっては翻訳されていないものもあります。
- 対象範囲:
すべての文字列
- 検査クラス:
weblate.checks.consistency.ConsistencyCheck
- 検査の識別子:
inconsistent
- 除外フラグ:
ignore-inconsistent
Weblate は、同一の文字列の翻訳が一貫性を維持できるように、プロジェクト内のすべての翻訳を検査します。
1 つの文字列についてプロジェクト内で異なる翻訳がある場合、検査では不合格となります。この場合、検査結果には一貫性の欠如と表示されます。この文字列の他の翻訳は その他の出現箇所 タブで確認できます。
この検査は、翻訳の自動反映の有効化 が有効化されているプロジェクト内のすべてのコンポーネントに適用されます。
ヒント
パフォーマンス上の理由から、検査ですべての不整合が検出されずに一致する数が制限されます。
注釈
この検査は、文字列があるコンポーネントでは翻訳されていて、別のコンポーネントでは未翻訳の場合にも発生します。これは、その他の出現箇所 タブの各行に表示される この翻訳を使う ボタンをクリックするだけで、一部のコンポーネントで翻訳されていない文字列を手動で処理する簡単な方法として使用できます。
自動翻訳 アドオンを使用して、別のコンポーネントですでに翻訳されている、新しく追加された文字列の翻訳を自動化できます。
Kashida 文字の使用#
- 概要:
装飾的なカシーダが使用されている翻訳文
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.KashidaCheck
- 検査の識別子:
kashida
- 除外フラグ:
ignore-kashida
Kashida の装飾文字は翻訳に使用しないでください。これは Tatweel とも呼ばれます。
Markdown のリンク#
- 概要:
Markdown のリンクが原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.MarkdownLinkCheck
- 検査の識別子:
md-link
- 有効にするフラグ:
md-text
- 除外フラグ:
ignore-md-link
Markdown リンクが原文と一致しません。
Markdown の参照#
- 概要:
Markdown の参照リンクが原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.MarkdownRefLinkCheck
- 検査の識別子:
md-reflink
- 有効にするフラグ:
md-text
- 除外フラグ:
ignore-md-reflink
Markdown リンクの参照が原文と一致しません。
Markdown 構文#
- 概要:
Markdown 構文が原文と一致しません
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.MarkdownSyntaxCheck
- 検査の識別子:
md-syntax
- 有効にするフラグ:
md-text
- 除外フラグ:
ignore-md-syntax
Markdown 構文が原文と一致しません
翻訳の最大文字数#
- 概要:
翻訳文は、設定した文字数を超えてはいけない
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.MaxLengthCheck
- 検査の識別子:
max-length
- 有効にするフラグ:
max-length
- 除外フラグ:
ignore-max-length
翻訳文が使用可能なスペースに収まる文字列数かどうかを検査します。これは、翻訳文の文字列数のみの検査です。
他の検査とは違い、フラグは max-length:100
のような key:value
ペアとして設定が必要です。
ヒント
この検査では文字数を確認するので、プロポーショナル フォントを使用してテキストを表示する場合は適さないかもしれません。翻訳の文字の最大サイズ 検査は、テキストの実際の表示結果を検査します。
replacements:
フラグは、文字列を検査する前に置換可能な要素を展開する場合にも便利です。
xml-text
フラグも使用している場合、長さの計算では XML タグが無視されます。
翻訳の文字の最大サイズ#
- 概要:
表示した翻訳のテキストは、設定した文字サイズを超えてはいけない
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.render.MaxSizeCheck
- 検査の識別子:
max-size
- 有効にするフラグ:
max-size
- 除外フラグ:
ignore-max-size
表示した翻訳のテキストは、設定した文字サイズを超えないようにしてください。行折り返しでテキストを表示し、設定した境界に収まるかどうかを確認します。
この検査には、最大幅と最大行数の 1 つまたは 2 つのパラメータが必要です。行数を指定しない場合は、1 行のテキストと判断されます。
使用するフォントは font-*
ディレクティブ(参照: フラグを使用した動作の設定)でも設定できます。次は、ubuntu のフォントサイズ 22 で表示するテキストを、2 行 500 ピクセルに収める翻訳フラグの設定方法:
max-size:500:2, font-family:ubuntu, font-size:22
ヒント
コンポーネント構成 内の font-*
ディレクティブを設定して、コンポーネント内のすべての文字列に同じフォントを設定できます。文字列ごとに設定することが必要な場合に備えて、文字列ごとにこれらの値を上書きできます。
replacements:
フラグは、文字列を検査する前に置換可能な要素を展開する場合にも便利です。
xml-text
フラグも使用している場合、長さの計算では XML タグが無視されます。
\n の不一致#
- 概要:
改行文字(\n)の数が原文と一致しないもの
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EscapedNewlineCountingCheck
- 検査の識別子:
escaped_newline
- 除外フラグ:
ignore-escaped-newline
通常、エスケープされた改行はプログラムの出力をフォーマットする際に重要です。翻訳の \n
リテラルの数が原文と一致しない場合、検査で不合格となります。
コロンの不一致#
- 概要:
原文と翻訳文で一致しない文末のコロン
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndColonCheck
- 検査の識別子:
end_colon
- 除外フラグ:
ignore-end-colon
原文と翻訳がどちらもコロンで終わっているか検査します。コロンを使わないさまざまな言語(中国語または日本語)についても検査されます。
省略記号の不一致#
- 概要:
原文と翻訳文で一致しない文末の省略記号
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndEllipsisCheck
- 検査の識別子:
end_ellipsis
- 除外フラグ:
ignore-end-ellipsis
原文から翻訳文に末尾の省略記号が複製されているか検査します。これは、3 つのドット (...
) ではなく、実際の省略記号 (…
) のみを検査します。
省略記号は通常、3 つのドットよりも綺麗に表示され、音声合成ではより適切に読み上げられます。
感嘆符の不一致#
- 概要:
原文と翻訳文で一致しない文末の感嘆符
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndExclamationCheck
- 検査の識別子:
end_exclamation
- 除外フラグ:
ignore-end-exclamation
原文から翻訳に感嘆符が複製されているか検査します。感嘆符の有無は、感嘆符を持たないさまざまな言語についても検査されます(中国語、日本語、韓国語、アルメニア語、リンブ語、ミャンマー語、またはンコ語)。
終止符の不一致#
- 概要:
原文と翻訳文で一致しない文末の終止符
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndStopCheck
- 検査の識別子:
end_stop
- 除外フラグ:
ignore-end-stop
原文から翻訳に終止符が複製されているか検査します。終止符の有無は、ピリオド (.) を使わない複数の言語(中国語、日本語、デーヴァナーガリー文字またはウルドゥー語)でも検査します。
疑問符の不一致#
- 概要:
原文と翻訳文で一致しない文末の疑問符
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndQuestionCheck
- 検査の識別子:
end_question
- 除外フラグ:
ignore-end-question
原文から翻訳文に疑問符が複製されているか検査します。疑問符の有無は、疑問符を持たない複数の言語(アルメニア語、アラビア語、中国語、韓国語、日本語、エチオピア語、ヴァイ語またはコプト語)についても検査します。
セミコロンの不一致#
- 概要:
原文と翻訳文で一致しない文末のセミコロン
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndSemicolonCheck
- 検査の識別子:
end_semicolon
- 除外フラグ:
ignore-end-semicolon
原文から翻訳文に、末尾のセミコロンが複製されているか検査します。
改行数の不一致#
- 概要:
改行の数が原文と一致しないもの
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.NewLineCountCheck
- 検査の識別子:
newline-count
- 除外フラグ:
ignore-newline-count
通常、改行はプログラムの出力をフォーマットするために重要です。翻訳の改行数が原文と一致しない場合、検査で不合格となります。
複数形の不足#
- 概要:
翻訳されなかった複数形がある
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.consistency.PluralsCheck
- 検査の識別子:
plurals
- 除外フラグ:
ignore-plurals
原文のすべての複数形が翻訳されているか検査します。各複数形の使用方法の詳細については、文字列の定義で確認できます。
複数形を記入しないと、複数形が使用されているときに何も表示されないことがあります。
プレースホルダー#
- 概要:
翻訳文にプレースホルダーが不足している
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.placeholders.PlaceholderCheck
- 検査の識別子:
placeholders
- 有効にするフラグ:
placeholders
- 除外フラグ:
ignore-placeholders
バージョン 4.3 で変更: 正規表現をプレースホルダーとして使用できる。
バージョン 4.13 で変更: case-insensitive
フラグを使用すると、プレースホルダーは大文字と小文字を区別しなくなります。
一部のプレースホルダーが翻訳に欠けています。これらは翻訳ファイルから抽出されるか、placeholders
フラグを使用して手動で定義します。フラグはコロンで区切り、スペースを含む文字列は引用符で囲んで使用します。
placeholders:$URL$:$TARGET$:"some long text"
プレースホルダーに構文がある場合の、正規表現の使用例:
placeholders:r"%[^% ]%"
大文字と小文字を区別しないプレースホルダーも可能:
placeholders:$URL$:$TARGET$,case-insensitive
句読点のスペース#
- 概要:
二重句読点の前に、改行できないスペースがありません
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.PunctuationSpacingCheck
- 検査の識別子:
punctuation_spacing
- 除外フラグ:
ignore-punctuation-spacing
句読点記号(感嘆符、疑問符、セミコロン、コロン)の前に改行できないスペースがあるか検査します。このルールは、フランス語やブルトン語などの、句読点記号の前のスペースはタイポグラフィの規則に準じる一部の言語でのみ使用されます。
正規表現#
- 概要:
翻訳文が正規表現に一致しない
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.placeholders.RegexCheck
- 検査の識別子:
regex
- 有効にするフラグ:
regex
- 除外フラグ:
ignore-regex
翻訳文には正規表現に一致するものはありません。正規表現は、翻訳ファイルから抽出するか、regex
フラグを使用して手動で定義します。例:
regex:^foo|bar$
他で使用された翻訳#
バージョン 4.18 で追加.
- 概要:
異なる文字列が同じように翻訳されています。
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.consistency.ReusedCheck
- 検査の識別子:
reused
- 除外フラグ:
ignore-reused
同じ翻訳が異なる原文で使用されている場合、検査は失敗します。このような翻訳は意図的なものである可能性もありますが、ユーザーを混乱させる可能性もあります。
同一の複数形#
- 概要:
同じように翻訳されている複数形のもの
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.consistency.SamePluralsCheck
- 検査の識別子:
same-plurals
- 除外フラグ:
ignore-same-plurals
翻訳文の複数形のうち、一致しているものがあるかを検出します。ほとんどの言語では、複数形はそれぞれ異なっている必要があります。
文頭の改行#
- 概要:
原文と翻訳文で一致しない文頭の改行
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.BeginNewlineCheck
- 検査の識別子:
begin_newline
- 除外フラグ:
ignore-begin-newline
改行は通常、適切な理由で原文内に表示されます。翻訳されたテキストを使用する場合は、省略や追加によってフォーマットが崩れることがあります。
参考
先頭の空白#
- 概要:
原文と翻訳文で一致しない文頭のスペース数
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.BeginSpaceCheck
- 検査の識別子:
begin_space
- 除外フラグ:
ignore-begin-space
文字列の先頭にあるスペースは、通常、インターフェイスのインデントに使用されるため、維持することが重要です。
文末の改行#
- 概要:
原文と翻訳文で一致しない末尾の改行
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndNewlineCheck
- 検査の識別子:
end_newline
- 除外フラグ:
ignore-end-newline
改行は通常、適切な理由で原文内に表示されます。翻訳されたテキストを使用する場合は、省略や追加によってフォーマットが崩れることがあります。
参考
文末の空白#
- 概要:
原文と翻訳文で一致しない末尾のスペース
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.EndSpaceCheck
- 検査の識別子:
end_space
- 除外フラグ:
ignore-end-space
原文から翻訳に末尾のスペースが複製されているか検査します。
末尾のスペースは、通常、隣接する要素をスペースに入れるため、削除するとレイアウトが壊れることがあります。
未翻訳の翻訳文#
- 概要:
原文と翻訳文が同一
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.same.SameCheck
- 検査の識別子:
same
- 除外フラグ:
ignore-same
原文と対応する翻訳文字列が、複数形のうち少なくとも 1 つまで同一である場合に発生します。すべての言語に共通する一部の文字列は無視され、さまざまなマークアップが除去されます。これにより、誤検出の数が減ります。
この検査は、誤って翻訳されていない文字列を見つけるのに便利です。
この検査のデフォルトの動作では、初期設定のブラックリストにある単語を検査対象から除外します。これらはしばしば翻訳されない単語です。これは、複数の言語で同じ 1 つの単語だけで構成される短い文字列での誤検出を避けるために便利です。このブラックリストを無効にするには、文字列またはコンポーネントに strict-same
フラグを追加します。
バージョン 4.17 で変更: check-glossary
フラグ(参照: 用語集に従っていない)フラグを使用すると、用語集の翻訳禁止用語は検査から除外されます。
安全でない HTML#
- 概要:
翻訳文には、安全でない HTML マークアップが使用されている
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.SafeHTMLCheck
- 検査の識別子:
safe-html
- 有効にするフラグ:
safe-html
- 除外フラグ:
ignore-safe-html
翻訳には、安全でない HTML マークアップが含まれています。この検査は safe-html
フラグ(参照: フラグを使用した動作の設定)を使用して有効にしなければなりません。マークアップを自動的にサニタイズできる autofixer も付属しています。
ヒント
また、md-text
フラグを使用している場合には、Markdown 形式のリンクも許可されます。
参考
HTML の検査は Ammonia ライブラリで処理されます。
URL#
- 概要:
翻訳文に URL が含まれていない
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.URLCheck
- 検査の識別子:
url
- 有効にするフラグ:
url
- 除外フラグ:
ignore-url
翻訳文に URL が含まれていません。これは、ユニットが URL を含むとマークされている場合にのみ起動します。その場合、翻訳は有効な URL であることが必要です。
XML マークアップ#
- 概要:
翻訳文の XML タグが原文と不一致
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.XMLTagsCheck
- 検査の識別子:
xml-tags
- 除外フラグ:
ignore-xml-tags
これは通常、出力結果が異なることを意味します。ほとんどの場合、これは翻訳の変更による望ましい結果ではありませんが、場合によっては変更されることもあります。
原文から翻訳文に XML タグが複製されているか検査します。
この検査は、XML のような文字列に対しては自動的に有効になります。強制的に有効にするため、場合によっては xml-text
フラグの追加が必要になります。
注釈
この検査は safe-html
フラグにより無効にされています。このフラグによって行われる HTML のクリーンアップにより、無効な XML の HTMLマークアップを生成する可能性があるためです。
XML 構文#
- 概要:
翻訳文が XML として正しくない
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.markup.XMLValidityCheck
- 検査の識別子:
xml-invalid
- 除外フラグ:
ignore-xml-invalid
XML マークアップは無効です。
この検査は、XML のような文字列に対しては自動的に有効になります。強制的に有効にするため、場合によっては xml-text
フラグの追加が必要になります。
注釈
この検査は safe-html
フラグにより無効にされています。このフラグによって行われる HTML のクリーンアップにより、無効な XML の HTMLマークアップを生成する可能性があるためです。
ゼロ幅スペース#
- 概要:
ゼロ幅スペース文字を含む翻訳文
- 対象範囲:
翻訳済みの文字列
- 検査クラス:
weblate.checks.chars.ZeroWidthSpaceCheck
- 検査の識別子:
zero-width-space
- 除外フラグ:
ignore-zero-width-space
単語の途中でのメッセージの改行(ワードラッピング)に、ゼロ幅スペース(<U+200B>)が使われています。
通常は誤って挿入するため、この検査は翻訳中に検出した時点で起動します。この文字を使用すると、一部のプログラムで問題が発生することがあります。
原文検査#
原文検査は、開発者が原文の品質を向上させるため便利です。
省略記号#
- 概要:
文字列では省略記号 (…) の代わりに 3 つのドット (...) が使われている
- 対象範囲:
原文
- 検査クラス:
weblate.checks.source.EllipsisCheck
- 検査の識別子:
ellipsis
- 除外フラグ:
ignore-ellipsis
これは、文字列で省略記号 (…
) を使用すべきところで、3 つのドット (...
) を使用すると不合格となります。
ほとんどの場合、Unicode 文字を使用する方が適切な方法であり、表示の品質も高くなります。また、テキスト読み上げでもより適切な音声になります。
Fluent ソース内部の HTML#
バージョン 5.0 で追加.
- 概要:
Fluent ソースは有効な内部 HTML であることが必要です
- 対象範囲:
原文
- 検査クラス:
weblate.checks.fluent.inner_html.FluentSourceInnerHTMLCheck
- 検査の識別子:
fluent-source-inner-html
- 有効にするフラグ:
fluent-source-inner-html
- 除外フラグ:
ignore-fluent-source-inner-html
Fluentは、しばしばメッセージ(または用語)の値が、一部の HTML 要素の .textContent
ではなく .innerHTML
として直接使用される文脈で使用されます。たとえば、Fluent DOM パッケージを使用する場合などです。
この検査の目的は、HTML 5 適合のパーサーを想定して値が inner HTML として解析される方法を予測し、文字列の「意図しない」損失が発生する可能性のあるケースを検出することです。ただし、文字列の損失につながらない技術的な解析エラーについては厳密すぎないようにします。
この検査は、Fluent メッセージや用語の値に適用されますが、その属性には適用されません。メッセージの場合、Fluent 属性は通常 HTML 属性値であり、任意の文字列を含むことができます。用語の場合、Fluent 属性は通常、Fluent 選択式のセレクタ内でのみ参照できる言語プロパティです。
一般的に、ほとんどの Fluent の値には HTML マークアップを含めないことが求められています。そのため、この検査は翻訳者や開発者が厳密に HTML 5 解析エラー(XHTML 解析エラーなど)を回避する必要はないことを求めています。代わりに、この検査は彼らが誤って HTML タグを開いたり、文字参照を挿入したりしている可能性がある場合に警告するだけです。
さらに、意図的に HTML タグや文字参照を含む Fluent の値に対して、この検査はいくつかの「優れた方法」を検証します。これには、閉じタグと終了タグの一致、有効な文字参照、クォートされた属性値などが含まれます。また、HTML5 仕様は技術的にはかなり任意のタグ名と属性名を許容していますが、この検査は基本的な ASCII 値に制限します。これにより、標準の HTML5 要素タグや属性だけでなく、一部のカスタム要素や属性名も扱えるようになります。これは、ユーザーが意図的に HTML を使用していることを一部確認するためのものです。
例:
値 |
警告? |
理由 |
---|---|---|
|
yes |
|
|
no |
|
|
yes |
終了タグがありません。 |
|
yes |
|
|
no |
カスタム要素タグと対応する閉じタグ。 |
|
no |
|
|
no |
|
|
yes |
属性値が引用符で囲まれていません。 |
|
yes |
非 ASCII タグ名。 |
|
yes |
''ð'' の部分は ''ð'' に変換されます。 |
|
no |
文字参照は意図的なようです。 |
|
yes |
|
|
yes |
文字参照は無効です。 |
|
yes |
Fluent の変数が意図せずタグになる可能性があります。 |
|
yes |
Fluent の変数が意図せずに文字参照になる可能性があります。 |
注釈
この検査は、内部 HTML の安全性やサニタイズされていることを*保証しません*。さらに、内部 HTML を意図的に変更しようとする悪意のある試みに対して保護するものではありません。さらに、Fluent の変数や参照は任意の文字列に展開されることがあるため、エスケープされていない限り任意の HTML に展開されることがあります。ただし、例外的に、Fluent の参照の前に <
または &
文字がある場合、これによりこの検査が起動します。なぜなら、エスケープされた値でも予期しない結果につながることがあるためです。
注釈
Fluent DOM パッケージには、この検査が強制しないような、許可されるタグや属性などの制限があります。
Fluent ソース構文#
バージョン 5.0 で追加.
- 概要:
原文での Fluent 構文エラー
- 対象範囲:
原文
- 検査クラス:
weblate.checks.fluent.syntax.FluentSourceSyntaxCheck
- 検査の識別子:
fluent-source-syntax
- 有効にするフラグ:
fluent-source-syntax
- 除外フラグ:
ignore-fluent-source-syntax
Weblate では、Fluent 文字列は参照や変数だけでなく、属性の定義やセレクタによる別表記、複数形を含むようなより複雑な機能にも Fluent の構文が使用されます。この検査は、ソースで使用される構文が Fluent に対して有効であることを保証します。
ICU MessageFormat syntax#
バージョン 4.9 で追加.
- 概要:
ICU MessageFormat 文字列に構文エラーがあります。
- 対象範囲:
原文
- 検査クラス:
weblate.checks.icu.ICUSourceCheck
- 検査の識別子:
icu_message_format_syntax
- 有効にするフラグ:
icu-message-format
- 除外フラグ:
ignore-icu-message-format
長期間未翻訳#
バージョン 4.1 で追加.
- 概要:
翻訳が放置された文字列
- 対象範囲:
原文
- 検査クラス:
weblate.checks.source.LongUntranslatedCheck
- 検査の識別子:
long_untranslated
- 除外フラグ:
ignore-long-untranslated
文字列が長期間未翻訳のまま放置されていた場合は、原文に問題があり、翻訳が困難である場合があります。
複数言語での検査不合格#
- 概要:
翻訳は複数の言語で、検査に不合格となった項目があります
- 対象範囲:
原文
- 検査クラス:
weblate.checks.source.MultipleFailingCheck
- 検査の識別子:
multiple_failures
- 除外フラグ:
ignore-multiple-failures
この文字列の翻訳の多くは、品質検査で不合格となっています。これは通常、原文を改善する方法が何かあるという意味です。
この検査の不合格は、文字列の末尾の終止符の欠落など、原文で修正すべきだが翻訳者が翻訳で修正する傾向があるささいな問題によって引き起こされることが多いです。
複数の無名変数#
バージョン 4.1 で追加.
- 概要:
文字列内に名前のない変数が複数あるため、翻訳者は並べ替えができません
- 対象範囲:
原文
- 検査クラス:
weblate.checks.format.MultipleUnnamedFormatsCheck
- 検査の識別子:
unnamed_format
- 除外フラグ:
ignore-unnamed-format
文字列内に名前のない変数が複数あるため、翻訳者が変数を並べ替えることはできません。
代わりに、名前付き変数を使用して、翻訳者が変数の順序を変更できるように検討してください。
複数形の書式になっていない#
- 概要:
文字列は複数形として使用されていますが、複数形の書式ではありません
- 対象範囲:
原文
- 検査クラス:
weblate.checks.source.OptionalPluralCheck
- 検査の識別子:
optional_plural
- 除外フラグ:
ignore-optional-plural
文字列は複数形として使用されますが、複数形の書式が使われていません。翻訳システムが複数形に対応している場合は、それを使用してください。
Python の Gettext 使用例:
from gettext import ngettext
print(ngettext("Selected %d file", "Selected %d files", files) % files)