これはグローバリゼーション品質管理でのチェックにより、国際化されたプロジェクトを世界で利用可能にします。このチェックはタスクQAおよびプルリクエスト上で実行され、変更が対象とする範囲のみを読み取ります。
- カタログ。変更によって追加または変更された文字列で、すべての言語に対応しています。
- コード。特定の言語や文化を前提としたテキストや書式設定を追加する行です。
- ページ。プロジェクトがアプリの起動方法を指定する際、そのページは「擬似翻訳。
pull requestがマージされると、ウィザードがデフォルトでこのチェックを有効にします。その設定は品質管理 → グローバリゼーションにあります;ワークベンチの設定が有効かどうかを示します。
デフォルトでブロックされる項目
文字列が欠落または破損している場合、あるいは追加されたコードが読者が直接読むテキストをコード内に埋め込んだり、断片から文を組み立てたりする場合、変更は修正のために差し戻されます。それ以外のすべての問題は「ファインディング」として報告されますが、ユーザーが明示的にブロックを選択しない限り何もブロックしません。書式設定、並べ替え、レイアウトに関するファインディングは、プロジェクト自身のコードで確認されるまで報告され続けます。
「品質管理 → グローバリゼーション:カタログコード、コード内で変更が差し戻される原因、および修正のために変更が差し戻されるページの問題。ソースコードをチェックおよびページをレンダリングでコードおよびページのチェックを無効にします。
カタログコード
| コード | 意味 | デフォルトでブロックされる項目 |
|---|---|---|
missing | 文字列に翻訳が存在しない | はい |
invalid_syntax | 翻訳が解釈できない、例えばICUの構文が破損している場合 | はい |
placeholder_mismatch | プレースホルダーがソースと異なる | はい |
plural_categories | その言語で必要な複数形が欠落している | はい |
stale | 文字列の翻訳後にソースが変更された | いいえ |
用語集、長さ、禁止用語のルールは、設定ファイルで指定されている場合、それぞれのコードを報告します。
コードコード
| コード | 検出内容 | デフォルトでブロックされる項目 |
|---|---|---|
hardcoded_text | 読者が読むテキストがカタログではなくコード内に記述されている場合:JSXやテンプレートテキスト、可視属性であるplaceholder、title、altおよびaria-label、トーストやアラート | はい |
concatenated_text | 断片から文が組み立てられる場合:翻訳がテキストや値と「+」、テンプレートリテラル、または隣接する要素で結合される場合 | はい |
locale_number | 読者のロケールに合わせずにフォーマットされた数値、例えばUIコード内のtoFixedやロケール指定のないtoLocaleString()の場合 | いいえ |
locale_date | 読者のロケールに合わせずにフォーマットされた日付または時刻、またはMM/dd/yyyy | いいえ |
hardcoded_currency | 金額の横に記載された通貨記号またはコード | いいえ |
ordinal_sort | 文字コードでソートまたは比較されるテキスト、またはロケール指定のないlocaleCompareの場合 | いいえ |
case_mapping | toUpperCase()またはtoLowerCase()でロケール指定のないテキストを処理する場合 | いいえ |
physical_direction | 右から左へ読む言語を使用するプロジェクトにおけるCSSやユーティリティクラスの左右指定 | いいえ |
postal_code_format | 特定の国のパターンで検証される郵便番号 | いいえ |
phone_number_format | 北米向けに検証される電話番号 | いいえ |
latin_only_input | a~zのみで制限される名前、都市名、通り名、住所 | いいえ |
joined_list | 読者が読むリストがカンマや「および」で結合される場合 | いいえ |
calendar_names | 曜日や月の名前がコード内に記述される、または週の始まりが固定されている場合 | いいえ |
paper_size | 印刷物やPDF設定で固定される文字、A4など | いいえ |
fixed_unit | 表示される数値の横に記載されるmi、lb、°Fなどの単位 | いいえ |
locale_parsing | ユーザーが入力した数値がparseFloatまたはNumber | いいえ |
ime_composition | 中国語、日本語、韓国語の単語がまだ入力中であるかを確認せずにテキスト入力でEnterキーが処理される場合 | いいえ |
あらゆる市場向けのデザインで各問題の修正方法が示されます。
チェックの読み取り内容
コードのステップではJavaScriptおよびTypeScriptを解析し、JSXを含む他、Vue、Svelte、Astro、HTML、ERB、HandlebarsのテンプレートやCSSをテキストとして読み取ります。ルールはそのコンテキスト名が指定する範囲でのみ適用されます:郵便番号のパターンは郵便番号フィールドの近くでのみ報告され、連結されたリストは読者がそれを読む場合にのみ報告されます。
- 定義上、翻訳済み。プロジェクト内の翻訳呼び出しおよびコンポーネント内のテキスト(
t()、formatMessage、<Trans>、<FormattedMessage>、$t()) および設定ファイルに記載された関数。 - 決して実行しない。保護された用語、および設定ファイルで許可される単語。
- 意図的に省略されています。「」を含む行。
i18n-ignoreコメントとその後の行。理由を記入してください:// i18n-ignore: product name。
オプションのworldのセクション。.coroid/i18n.json残りの設定は次の通り:
{
"world": {
"exclude": ["src/legacy/**", "scripts/**"],
"translate": ["translateText", "i18n.translate"],
"allow": ["Storefront", "OK"]
}
}| フィールド | 意味 |
|---|---|
exclude | ルールが対象外とするファイルのグロブ指定 |
translate | フレームワーク独自のもの以外の翻訳関数 |
allow | 保護された用語以外で決して翻訳されない単語 |
formatter、currencies | ウィザードの「Culture」ステップで設定されます。詳細はCulture |
render | 疑似ローカライゼーション用ページでアプリを起動する方法については、疑似ローカライゼーション |
検出結果と修正内容
各検出結果はチェックの実行時に保存され、タスクの検出結果に一覧表示されます。検出された問題:カタログ別、キー別、言語別に検出結果を分類し、ファイル別、行番号別、検出されたテキスト別にコードの検出結果を整理し、ページ別、要素別、テキスト別にページの検出結果をまとめます。同じ作業に対する最新のチェックで該当する検出結果がなくなった場合に、その検出結果は修正済みとみなされます。
- 開くui · checkout.total · fr: missingグローバリゼーション · 未翻訳
- 修正中src/pricing.tsx:7 · “シンプルな料金体系”グローバリゼーション · コード内に直接記述されたテキスト
- 開く/{locale}/ · p#promo · “ご注文ごとに送料無料” · runtime_text (de-DE, ar-SA)グローバリゼーション · カタログに記載されていないテキスト
- 修正中ui · cart.items · ja: placeholder_mismatchグローバリゼーション · プレースホルダーがソースと一致しない
- 修正済みui · cart.count · ar: plural_categoriesグローバリゼーション · このロケールでは複数形の表現が欠落している
グローバリゼーション検査による品質上の問題点:カタログ内の文字列、コードへの変更内容、疑似ローカライズされたページ、各問題点に対応するコードが示されます。参考用データです。
プルリクエストでは、コードの検出結果も変更された行に注釈として表示されます。障害を引き起こす場合はエラーとして、単に報告されるだけの場合は警告として示されます。
チェックでタスクがブロックされると、開発者エージェントには各ブロッキング検出結果が渡されます。例えばsrc/pricing.tsx:7 hardcoded_text: “Simple pricing”など、修正方法と共に提供されます。タスク専用の翻訳セッションを通じて翻訳を修正し、他の言語のカタログを手動で編集することは決してありません。テキストをソースカタログに移動させ、組み立てられた文をプレースホルダー付きの一つのメッセージに書き換え、タスクを引き継ぐ前に自身の変更に対してコードルールを実行します。
あらゆるソースからの貢献
誰が作成した変更であっても、チェックでは同一の基準が適用されます。
- Coroidのエージェント国際化プロジェクトで作業する場合、各タスクにはソースカタログと翻訳関数、文ごとに一つのメッセージ、プロジェクトのフォーマッター、右から左へ書かれる言語の論理的レイアウト、およびCultureで定義される市場の慣習が明示されます。
- 人間や他のツールからのプルリクエストはCoroid Checkを通じてチェックを受け、同じ検出結果と注釈が適用されます。すべてのPRをレビューするを有効にして、すべてのpull requestで実行してください。
- チェックを通過せずにマージされた変更はマージ後に検出されます。 Coroid外でマージされた文字列を翻訳するはpull requestで実行されたチェックの内容を読み取ります。文字列が欠落または古くなっている場合には翻訳タスクを作成します。コードの検出結果でチェックがブロックされた場合には、「 マージされたコードを国際化するpull request内で確認箇所を一覧表示します。各マージで作成されるタスクは最大で各種類ごと一つです。
既存のコードがブロックされることは決してありません:グローバル対応はそれを一覧表示し、ユーザーが選択したタイミングで開始できる修正タスクを作成します。
自分で実行する
エンジンはコマンドラインツールcoroid-i18nであり、設定ファイルで指定されたバージョンです:
coroid-i18n check # catalogues
coroid-i18n source --changed main # the code a branch adds since main
coroid-i18n check --source --changed mainsourceはカタログを読み取らずにコードを解析するため、カタログがまだ設定されていなくても動作します。--changedまたは--diffを使用するとリポジトリ全体が読み取られます。何かが見つかった場合、両コマンドはステータスコード1で終了します。--format jsonを追加して機械読み取り可能なレポートを生成してください。