アプリをローカライズ可能にするMake your app localizable

ローカライズされたアプリは、アプリで機能上の欠陥を生じさせることなく他の市場、言語、または地域にローカライズできるアプリです。A localized app is one that can be localized for other markets, languages, or regions without uncovering any functional defects in the app. ローカライズ可能なアプリの最も重要な特性は、その実行可能コードが、アプリのローカライズ可能なリソースから明確に区別されていることです。The most essential property of a localizable app is that its executable code has been cleanly separated from its localizable resources. そのため、アプリのリソースのどれをローカライズする必要があるかを判断する必要があります。So, you should determine which of your app's resources need to be localized. 他の市場向けにアプリをローカライズすることになった場合には、何を変更する必要があるかよく考えてください。Ask yourself what needs to change if your app is to be localized for other markets.

また、グローバリゼーションのガイドラインに慣れることをお勧めします。We also recommend that you become familiar with the guidelines for globalization.

リソース ファイル (.resw) に文字列を格納するPut your strings into Resources Files (.resw)

ハード コーディング文字列リテラル、XAML マークアップ、命令型コードにも、アプリのパッケージ マニフェストではありません。Don't hard-code string literals in your imperative code, XAML markup, nor in your app package manifest. 代わりに、アプリの事前ビルドされたバイナリに関係なくさまざまな地域市場に適応できるように、リソース ファイル (.resw) に文字列を格納します。Instead, put your strings into Resources Files (.resw) so that they can be adapted to different local markets independently of your app's built binaries. 詳細については、「UI とアプリ パッケージ マニフェスト内の文字列をローカライズする」を参照してください。For details, see Localize strings in your UI and app package manifest.

そのトピックでは、既定のリソース ファイル (.resw) にコメントを追加する方法も示します。That topic also shows you how to add comments to your default Resources File (.resw). たとえば、くだけた表現を使う場合は、そのことをコメント内で説明してくださいFor example, if you are adopting an informal voice or tone then be sure to explain that in comments. また、コストを最小限に抑えるため、変換する必要がある文字列だけが翻訳者に提供されることを確認します。Also, to minimize expense, confirm that only the strings that need to be translated are provided to translators.

アプリ パッケージ マニフェスト ソース ファイル (Package.appxmanifest ファイル) でアプリの既定の言語を適切に設定します。Set the default language for your app appropriately in your app package manifest source file (the Package.appxmanifest file). ユーザーの優先する言語が、アプリでサポートされる言語のいずれにも一致しない場合、使われる言語は既定の言語によって決定されます。The default language determines the language that's used when the user's preferred languages don't match any of the supported languages of your app. すべてのリソースをその言語でマークしてください (\Assets\en-us\Logo.png のように既定の言語で作られているものも含む)。こうすることで、システムはリソースで使われている言語と、個々の状況でそのリソースがどのように使われるかを判断できます。Mark all of your resources with their language (even the ones in your default language, for example \Assets\en-us\Logo.png) so that the system can tell which language the resource is in and how it's used in particular situations.

言語に合わせてイメージやその他のファイル リソースを調整するTailor your images and other file resources for language

イメージをグローバル化する、つまり、文化に依存しないようにできることが理想的です。Ideally, you will be able to globalize your images—that is, make them culture-independent. それが可能ではないイメージやその他のファイル リソースでは、必要なだけそれらのさまざまなバリエーションを作成し、適切な言語修飾子をそれらのファイル名またはフォルダー名に追加します。For any images and other file resources where that's not possible, create as many different variants of them as you need and put the appropriate language qualifiers into their file or folder names. 詳細については、「言語、スケール、ハイ コントラスト、その他の修飾子用にリソースを調整する」を参照してください。To learn more, see Tailor your resources for language, scale, high contrast, and other qualifiers.

ローカライズ コストを最小限に抑えるために、テキストまたは文化的に重要な内容を開始時のイメージに含めないでください。To minimize localization costs, don't put text nor culturally-sensitive material into images to begin with. 自分が所属するカルチャでは妥当なイメージでも、別のカルチャでは不快感を与えたり、誤って解釈されたりすることがあります。An image that's appropriate in your own culture might be offensive or misinterpreted in other cultures. 世界で一般的ではない、メールボックスなどのカルチャ固有のイメージを使用しないでください。Avoid the use of culture-specific images such as mailboxes, which are not common around the world. 宗教的なシンボル、動物、政治、性別に固有のイメージを避けます。Avoid religious symbols, animals, political, or gender-specific images. 肌、手足、指のジェスチャの表示も慎重に扱う必要がある場合があります。The display of flesh, body parts, or hand gestures can also be a sensitive topic. これらのすべてを回避することはできない場合、イメージは慎重にローカライズする必要があります。If you can't avoid all of these, then your images will need to be thoughtfully localized. 読み取り順が自国語とは異なる言語にローカライズする場合は、左右対称の画像や効果を使うと左右反転をサポートしやすくなります。If you're localizing to a language with a different reading direction than your own, using symmetrical images and effects make it easier to support mirroring.

また、イメージ内にテキストを使用したり、オーディオ ファイルや動画ファイルで音声を使用しないでください。Also avoid the use of text in images, and speech in audio/video files.

アプリで色の使用The use of color in your app

色を使用する場合は注意してください。Be mindful when using color. 国旗や政治運動に関連付けられる色の組み合わせを使用すると、問題が生じる場合があります。Using color combinations that are associated with national flags or political movements can be problematic. 色の選択は、カルチャの専門家が確認する必要があります。Color choices may need to be reviewed by culture experts. 色を使用する際にはアクセシビリティの問題もあります。There is also an accessibility issues with using color. 色を使って意味を伝える場合は、サイズ、形状、またはラベルなど他の方法でも同じ情報を伝える必要があります。If you use color to convey meaning then you should also convey that same information by some other means, such as size, shape, or a label.

文字列を文に分けることを検討するConsider factoring your strings into sentences

適切なサイズの文字列を使用します。Use appropriately-sized strings. 文字列を短くすると翻訳が簡単になり、翻訳データを再使用できます (これにより同じ文字列が 1 回以上ローカライズ担当者に送られなくなるため、コストが削減されます)。Short strings are easier to translate, and they enable translation recycling (which saves expense because the same string isn't sent to the localizer more than once). また、非常に長い文字列は、ローカライズ ツールではサポートされていない可能性があります。Also, extremely long strings might not be supported by localization tools.

ただし、このガイドラインには、異なるコンテキストで文字列を再利用することで生じるリスクが記載されています。But in tension with this guideline is the risk of re-using a string in different contexts. "オン"や"オフ" などの簡単な語句でも、コンテキストに基づいて別の翻訳がなされる可能性があります。Even simple words such as "on" and "off" might be translated differently, depending on the context. 日本語では、"オン" と "オフ" は、フライト モード、Bluetooth、デバイスの切り替えに使うことができます。In the English language, "on" and "off" can be used for a toggle for Flight Mode, Bluetooth, and devices. しかし、イタリア語では、何がオンで何がオフかというコンテキスト (状況) に応じて翻訳が変化します。But in Italian, the translation depends on the context of what is being turned on and off. コンテキストごとに 2 つの文字列の組み合わせを作らなければなりません。You would need to create a pair of strings for each context. 2 つのコンテキストが同じである場合には文字列を再使用できます。You can reuse strings if the two contexts are the same. たとえば、"ボリューム" という文字列は、サウンド効果のボリュームと音楽のボリュームの両方に使うことができます。どちらもサウンドの強さを意味するためです。For instance, you can reuse the string "Volume" for both sound effect volume and music volume because both refer to intensity of sound. ハード ディスクのボリュームの場合、コンテキストと意味が異なり、この語句が他の言葉に翻訳される可能性があります。このため、ハード ディスクを指す場合には、同じ文字列を再使用してはなりません。You should not reuse that same string when referring to a hard disk volume because the context and meaning are different, and the word might be translated differently.

また、"text" や "fax" などの文字列は英語では動詞としても名詞としても使うことができますが、翻訳プロセスを混乱させる可能性があります。Additionally, a string like "text" or "fax" could be used as both a verb and a noun in the English language, which can confuse the translation process. この場合、別の方法として動詞形と名詞形の両方に個別の文字列を作ります。Instead, create a separate string for both the verb and noun format. コンテキストが同じかどうか確信できない場合は、(間違えるとしても) 重大な間違いは避け、明確な文字列を使ってください。When you're not sure whether the contexts are the same, err on the safe side and use a distinct string.

つまり、文字列をすべてのコンテキストで機能する断片に分けます。In short, factor your strings into pieces that work in all contexts. 場合によっては、文字列が文全体である必要があります。There will be cases where a string will need to be an entire sentence.

次の文字列を検討してください。"、{0}同期できませんでした"。Consider the following string: "The {0} could not be synchronized."

さまざまな単語を置き換えることができます{0}「予定」、「タスク」、"document"など。A variety of words could replace {0}, such as "appointment", "task", or "document". この例は日本語では機能しますが、たとえばドイツ語の対応する文ではどのようなケースでも機能しません。While this example works for the English language, it will not work in all cases for the corresponding sentence in, for example, German. 次に示すドイツ語の文では、テンプレート文字列内の一部の語句 ("Der"、"Die"、"Das") はパラメーター化された語句と一致する必要があります。Notice that in the following German sentences, some of the words in the template string ("Der", "Die", "Das") need to match the parameterized word:

日本語English ドイツ語German
予定を同期できませんでした。The appointment could not be synchronized. Der Termin konnte nicht synchronisiert werden.Der Termin konnte nicht synchronisiert werden.
タスクを同期できませんでした。The task could not be synchronized. Die Aufgabe konnte nicht synchronisiert werden.Die Aufgabe konnte nicht synchronisiert werden.
ドキュメントを同期できませんでした。The document could not be synchronized. Das Dokument konnte nicht synchronisiert werden.Das Dokument konnte nicht synchronisiert werden.

別の例として、文を検討してください"で通知する{0}分です"。As another example, consider the sentence "Remind me in {0} minute(s)." "分" は日本語では使うことができますが、他の言語では別の語句を使っている可能性があります。Using "minute(s)" works for the English language, but other languages might use different terms. たとえば、ポーランド語では、状況に応じて "minuta"、"minuty"、または "minut" を使います。For example, the Polish language uses "minuta", "minuty", or "minut" depending on the context.

この問題を解決するには、1 つの単語ではなく、文全体をローカライズしてください。To solve this problem, localize the entire sentence, rather than a single word. このやり方は手間がかかり、洗練されていないように見えるかもしれませんが、次の理由から最善の方法と言えます。Doing this may seem like extra work and an inelegant solution, but it is the best solution because:

  • どの言語でも、文法的に正しいメッセージが表示される。A grammatically correct message will be displayed for all languages.
  • 翻訳者は、文字列が何に置き換えられるかをたずねる必要がない。Your translator will not need to ask about what the strings will be replaced with.
  • アプリが完了した後でこのような問題が浮かび上がったときに、犠牲の大きいコード修正を行う必要がない。You will not need to implement a costly code fix when a problem like this surfaces after your app is completed.

文字列に関するその他の考慮事項Other considerations for strings

既定の言語で作成した文字列に俗語や比喩を使わない。Avoid colloquialisms and metaphors in the strings that you author in your default language. 一部のカルチャや年齢などの集団にしか伝わらない言葉は、その集団の人しか使わないので、理解や翻訳が難しい場合があります。Language that's specific to a demographic group, such as culture and age, can be hard to understand or translate because only people in that demographic group use that language. 同様に、比喩も人によって伝わったり伝わらなかったりします。Similarly, metaphors might make sense to one person but mean nothing to someone else. たとえば、"ブルーバード" はスキーをする人には伝わりますが、スキーをしない人には伝わりません。For example, a "bluebird" means something specific to those who are part of skiing culture, but those who aren’t part of that culture don’t understand the reference.

専門的な用語、省略形、略語を使わない。Don't use technical jargon, abbreviations, or acronyms. 専門用語は、専門知識のないユーザーや他のカルチャまたは地域の人々には意図が伝わりにくく、翻訳も困難です。Technical language is less likely to be understood by non-technical audiences or people from other cultures or regions, and it's difficult to translate. このような言葉は日常会話では使われません。People don't use these kinds of words in everyday conversations. 専門用語は、ハードウェアとソフトウェアの問題を特定するため、エラー メッセージ内でよく使われますが、ユーザーがそのレベルの情報を必要し、それに対処できる場合、または対処できる人を探せる場合にのみ文字列に専門用語を使います。Technical language often appears in error messages to identify hardware and software issues, but you should strings to be technical only if the user needs that level of information, and can either action it or find someone who can.

文字列にくだけた表現を使うことは、有効な選択肢です。Using an informal voice or tone in your strings is a valid choice. コメントは、その目的を示すために、既定のリソース ファイル (.resw) で使用できます。You can use comments in your default Resources File (.resw) to indicate that intention.

擬似言語によるローカライズPseudo-localization

アプリを擬似言語でローカライズすると、ローカライズの可否に関する問題を発見できます。Pseudo-localize your app to uncover any localizability issues. 擬似言語によるローカライズは、一種のローカライズの予行演習または開示テストです。Pseudo-localization is a kind of localization dry-run, or disclosure test. 実際には翻訳されていないが翻訳されているように見えるリソースのセットを生成します。You produce a set of resources that are not really translated; they only look that way. たとえば、UI で文字列が切り捨てられたかどうかがひとめで確認できるように、文字列が既定の言語より約 40% 長く、区切り記号が含まれています。Your strings are approximately 40% longer than in the default language, for example, and they have delimiters in them so that you can see at a glance whether they have been truncated in the UI.

展開に関する考慮事項Deployment Considerations

ローカライズされた言語のデータを含むアプリをインストールするときに、最初に複数の言語リソースが含まれている場合でも、既定の言語のみがアプリの使用可能なことがあります。When you install an app that contains localized language data, you might find that only the default language is available for the app even though you initially included resources for multiple languages. 現在の言語とデバイスのカルチャに一致する言語リソースのみをインストールするインストール プロセスが最適化されたためにです。This is because the installation process is optimized to only install language resources that match the current language and culture of the device. そのため、デバイスは、en-us で構成する場合は、EN-US 言語リソースのみがアプリと共にインストールされます。Therefore, if your device is configured for en-US, only the en-US language resources are installed with your app.

注意

初期インストール後、アプリの追加の言語サポートをインストールすることはできません。It is not possible to install additional language support for your app after the initial installation. アプリをインストールした後、既定の言語を変更すると、アプリは引き続き元の言語リソースのみを使用します。If you change the default language after installing an app, the app continues to use only the original language resources.

インストール後にすべての言語リソースが使用できることを確認する場合は、(言語リソースを含む) のインストール中に特定のリソースが必要なことを指定するアプリ パッケージの構成ファイルを作成します。If you want to ensure all language resources are available after installation, create a configuration file for the app package that specifies that certain resources are required during installation (including language resources). アプリケーションの .appxbundle がパッケージ化中に生成されたときに、この最適化されたインストール機能が自動的に有効にします。This optimized installation feature is automatically enabled when your application's .appxbundle is generated during packaging. 詳細については、次を参照してください。リソースがデバイスでの必要かどうかに関係なく、デバイスにインストールされていることを確認します。For more information, see Ensure that resources are installed on a device regardless of whether a device requires them.

必要に応じて、すべてのリソースを確実にインストール (サブセットだけでなく)、アプリをパッケージ化するときに .appxbundle 生成を無効にできます。Optionally, to ensure all resources are installed (not just a subset), you can disable .appxbundle generation when you package your app. ただしこれは推奨されませんように、アプリのインストール時間を増やすことができます。This is not recommended however as it can increase the installation time of your app.

「アプリ バンドルの生成」属性を"never"に設定して、.appxbundle の自動生成を無効にします。Disable automatic generation of the .appxbundle by setting the "Generate App Bundle" attribute to “never”:

  1. Visual Studio でプロジェクト名を右クリックします。In Visual Studio, right-click the project name
  2. 選択ストア -> アプリ パッケージを作成しています.Select Store -> Create app packages...
  3. パッケージの作成ダイアログ ボックスで、新しいアプリ名を使用して Microsoft Store にアップロードするパッケージを作成したい順にクリックしますします。In the Create Your Packages dialog, select I want to create packages to upload to the Microsoft Store using a new app name and then click Next.
  4. アプリケーション名を選択ダイアログ ボックスで、選択/作成のアプリ パッケージの名前を付けます。In the Select an app name dialog, select/create an app name for your package.
  5. を選択し、パッケージの構成 ダイアログ ボックスで、セット アプリケーション バンドルの生成Never します。In the Select and Configure Packages dialog, set Generate app bundle to Never.

地理的な認識Geopolitical awareness

地図や、地域についての言及では、政治的侵害を避ける。Avoid political offense in maps or when referring to regions. 地図には論争の的になっている地域や国境が含まれている可能性があり、それらはしばしば政治的な侵害のきっかけになります。Maps might include controversial regional or national boundaries, and they're a frequent source of political offense. 国家の選択に使う UI は、必ず "国/地域" という名称にしてください。Be careful that any UI used for selecting a nation refers to it as a "country/region". 住所フォームなどで "国" という名称の一覧に領有権未決の領域を含めると、一部のユーザーにとって問題となる可能性があります。Listing a disputed territory in a list labeled "countries"—such as in an address form—might offend some users.

言語- および地域 -変更イベントLanguage- and region-changed events

システムの言語と地域の設定が変更されたときに発生するイベントをサブスクライブします。Subscribe to events that are raised when the system's language and region settings change. これは、必要に応じてリソースを再読み込みできるようにするために行います。Do this so that you can re-load resources, if appropriate. 詳細については、「修飾子の値の変更イベントへの応答で文字列を更新する」および「修飾子の値の変更イベントへの応答で画像を更新する」を参照してください。For details, see Updating strings in response to qualifier value change events and Updating images in response to qualifier value change events.

文字列を書式設定するときに、パラメーターの順番が正しくなるようにします。Ensure the correct parameter order when formatting strings

どの言語も同じ順番でパラメーターを表現すると想定しないでください。Don't assume that all languages express parameters in the same order. この書式設定の例を次に示します。For example, consider this format.

    string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".

この例の書式文字列は英語 (米国) で機能します。The format string in this example works for English (United States). ただし、たとえば、日と月が逆の順序で表示されるドイツ語 (ドイツ) では適切ではありません。But it is not appropriate for German (Germany), for example, where the day and month are displayed in the reverse order. 書式指定文字列の書式項目の順序が反転できるように、変換プログラムを各パラメーターの目的は、知っていることを確認します (たとえば、"{1} {0}") 必要に応じて、対象言語にします。Ensure that the translator knows the intent of each of the parameters so that they can reverse the order of the format items in the format string (for example, "{1} {0}") as appropriate for the target language.

過度なローカライズを避けるDon’t over-localize

プログラミング言語やマークアップではなく、自然言語のみを翻訳者に送信します。Only submit natural language to translators; not programming language nor markup. <link> タグは、自然言語ではありません。A <link> tag is not natural language. 次の例について考えてみましょう。Consider these examples.

ローカライズ対象外Don't localize this ローカライズ対象Localize this
<link>使用条件</link><link>terms of use</link> 使用条件terms of use
<link>プライバシー ポリシー</link><link>privacy policy</link> プライバシー ポリシーprivacy policy

<link> タグをリソース ファイル (.resw) に含めることは、それも翻訳対象となる可能性があることを意味します。Including the <link> tag in your Resources File (.resw) means that it, too, is likely to be translated. それにより、タグが無効になります。That would render the tag invalid. コンテキストを保持して順序を正しい状態にするために、長い文字列にマークアップを含める必要がある場合は、翻訳対象ではないものをコメントで明確にします。If you have long strings that need to include markup in order to maintain context and ensure ordering, then make it clear in comments what not to translate.

適切な翻訳方法を選ぶChoose an appropriate translation approach

文字列がリソース ファイルとして分けられた後、それらを翻訳できます。After strings are separated into resource files, they can be translated. 文字列を翻訳するのに適したタイミングは、プロジェクト内の文字列が最終的に確定した後です。この最終処理は、通常、プロジェクトの終わりごろです。The ideal time to translate strings is after the strings in your project are finalized, which usually happens toward the end of a project. 翻訳プロセスには、さまざまな方法で取り組むことができます。You can approach the translation process in number of ways. どの方法を選ぶかは、翻訳する文字列の量、翻訳する言語の数、翻訳の方法 (社内で行うか外部ベンダーを雇うか) などに応じて決まります。This may depend on the volume of strings to be translated, the number of languages to be translated, and how the translation will be done (such as in-house versus hiring an external vendor).

次のオプションを検討してください。Consider these options.

  • リソース ファイルは、プロジェクトで直接開くことによって変換できます。The resource files can be translated by opening them directly in the project. この方法は、文字列の量が少ないプロジェクトや、2 ~ 3 言語に翻訳する必要があるプロジェクトに合っています。This approach works well for a project that has a small volume of strings that need to be translated into two or three languages. たとえば、開発者が複数の言語に通じており、翻訳プロセスを自分で処理することをいとわない場合などに適します。It could be suitable for a scenario where a developer speaks more than one language and is willing to handle the translation process. この方法は迅速さがメリットであり、ツールを必要とせず、誤訳のリスクが最小限に抑えられます。This approach benefits from being quick, requires no tools, and minimizes the risk of mistranslations. ただし拡張性はありません。But it is not scalable. たとえば、複数の言語にわたるリソースの同期があっけなく失われ、ユーザー操作に問題が生じ、メンテナンスが困難になる可能性があります。In particular, the resources in different languages can easily get out of sync, causing bad user experiences and maintenance headaches.
  • 文字列リソース ファイルは任意のテキスト エディターを使用して翻訳に渡す可能性がありますのでなど、XML または ResJSON のテキスト形式です。翻訳済みのファイル、プロジェクトにコピーします。The string resource files are in XML or ResJSON text format, so could be handed off for translation using any text editor. The translated files would then be copied back into the project. この方法には翻訳者が誤って XML タグを編集するリスクがありますが、Microsoft Visual Studio プロジェクトの外で翻訳作業を進めることができます。This approach carries a risk of translators accidentally editing the XML tags, but it lets translation work take place outside of the Microsoft Visual Studio project. この方法は、少数の言語に翻訳する必要があるプロジェクトに適します。This approach could work well for projects that need to be translated into a small number of languages. XLIFF 形式はローカライズ向けとして特別に設計された XML 形式であり、いくつかのローカライズ ベンダーやローカライゼーション ツールでうまくサポートされています。The XLIFF format is an XML format specifically designed for use in localization, and should be well supported by some localization vendors or localization tools. 他のリソース ファイル (.resw や .resjson など) から XLIFF ファイルを生成する場合は、多言語アプリ ツールキットを使うことができます。You can use the Multilingual App Toolkit to generate XLIFF files from other resource files, such as .resw or .resjson.

注意

ローカリゼーションは、イメージ、オーディオ ファイルなど、他の資産のために必要な場合もあります。Localization might also be necessary for other assets, including images and audio files.

次も考慮する必要があります。You should also consider the following:

  • ローカライズ ツールリソース ファイルを解析し、翻訳者によって編集する変換可能な文字列のみを許可することの多数のローカライズ ツールを利用します。Localization tools A number of localization tools are available for parsing resource files and allowing only the translatable strings to be edited by translators. この方法では翻訳者が誤って XML タグを編集するリスクは減ります。This approach reduces the risk of a translator accidentally editing the XML tags. ただし、ローカライズ プロセスに新しいツールとプロセスの導入が必要になるという欠点があります。But it has the drawback of introducing a new tool and process to the localization process. ローカライズ ツールは、扱う文字列は大量であるが言語は少ないというプロジェクトに適します。A localization tool is good for projects with a large volume of strings but a small number of languages. 詳細については、「多言語アプリ ツールキットの使用方法」を参照してください。To learn more, see How to use the Multilingual App Toolkit.
  • ローカライズ ベンダローカリゼーション仕入先を使用して、アプリケーションには、多くの言語に翻訳する必要のある広範な文字列が含まれている場合を検討してください。Localization vendors Consider using a localization vendor if your application contains extensive strings that need to be translated into a large number of languages. ローカライズ ベンダーは、リソース ファイルの翻訳だけでなく、ツールとプロセスについてのアドバイスを得るためにも利用できます。A localization vendor can give advice about tools and processes, as well as translating your resource files. これは非常によい解決策ですが、最もコストがかかる選択肢でもあり、翻訳済みコンテンツの作業期間が延びる可能性があります。This is an ideal solution, but is also the most costly option, and may increase the turnaround time for your translated content.

アクセス キーとラベルの一貫性を維持するKeep access keys and labels consistent

アクセシビリティで使われるアクセス キーとローカライズされたアクセス キーは、2 つの個別のセクションに分類されます。このため、この 2 つの文字列リソースの表示の "同期" は難問です。It is a challenge to "synchronize" the access keys used in accessibility with the display of the localized access keys, because the two string resources are categorized in two separate sections. ラベル文字列に Make sure that the emphasized shortcut key is synchronized with the access key. のようなコメントを必ず入れてください。Be sure to provide comments for the label string such as: Make sure that the emphasized shortcut key is synchronized with the access key.

並べ替えることができる日本語文字列のふりがなのサポートSupport furigana for Japanese strings that can be sorted

日本語の漢字には、それが使用される語句に応じて変化する複数の読み方 (発音) があるという特性があります。Japanese kanji characters have the property of having more than one reading (pronunciation) depending on the word in which they are used. このため、日本語の名称が付いたオブジェクト (アプリケーション名、ファイル、曲など) を並べ替えるときに問題が発生します。This leads to problems when you try to sort Japanese named objects, such as application names, files, songs, and so on. 日本語の漢字は、以前は一般に、XJIS と呼ばれる、コンピューターが理解できる順序で並べられていました。Japanese kanji have, in the past, usually been sorted in a machine-understandable order called XJIS. 残念ながら、この並べ替え順序は発音に即したものではなく、人間にとってはそれほど便利ではありません。Unfortunately, because this sorting order is not phonetic it is not very useful for humans.

ふりがな を使うと、ユーザーや作成者は自分が使う文字の表音要素を指定でき、この問題が解決されます。Furigana works around this problem by allowing the user or creator to specify the phonetics for the characters they are using. 以下の手順でふりがなをアプリ名に追加すると、アプリ一覧の正しい場所にその名前が並びます。If you use the following procedure to add furigana to your app name, you can ensure that it is sorted in the proper location in the app list. アプリ名を漢字で付け、ふりがなは含めなかった場合、ユーザーの UI 言語または並べ替え順序が日本語に設定されていると、Windows は適切な発音を生成しようと最善の努力を尽くします。If your app name contains kanji characters and furigana is not provided when the user’s UI language or the sort order is set to Japanese, Windows makes its best effort to generate the appropriate pronunciation. しかし、珍しい読み方やユニークな読み方をするアプリ名の場合、比較的一般的な読みで並べ替えられる可能性があります。However, there is a possibility for app names containing rare or unique readings to be sorted under a more common reading instead. このため、日本語アプリケーション (特に名前に漢字が含まれるアプリケーション) で最も望ましい方法は、日本語ローカライズ プロセスの一環として、ふりがなバージョンのアプリ名を提供することです。Therefore, the best practice for Japanese applications (especially those containing kanji characters in their names) is to provide a furigana version of their app name as part of the Japanese localization process.

  1. [パッケージ表示名] と [アプリケーション表示名] として "ms-resource: Appname" を追加します。Add "ms-resource:Appname" as the Package Display Name and the Application Display Name.

  2. 次に示すように、strings フォルダーの下に ja-JP フォルダーを作り、2 つのリソース ファイルを追加します。Create a ja-JP folder under strings, and add two resource files as follows:

    strings\
        en-us\
        ja-jp\
            Resources.altform-msft-phonetic.resw
            Resources.resw
    
  3. 一般的な JA-JP Resources.resw:Appname「希蒼」の文字列リソースを追加します。In Resources.resw for general ja-JP: Add a string resource for Appname "希蒼"

  4. で Resources.altform-msft-phonetic.resw の日本語のふりがなリソース。ふりがなの値「のあ」アプリ名を追加します。In Resources.altform-msft-phonetic.resw for Japanese furigana resources: Add furigana value for AppName "のあ"

ユーザーは、ふりがな値 "のあ" と発音値 (入力方式エディター (IME) の GetPhonetic 関数を使う) "まれあお" の両方を使ってアプリ名 "希蒼" を検索できます。The user can search for the app name "希蒼" using both the furigana value "のあ" (noa), and the phonetic value (using the GetPhonetic function from the Input Method Editor (IME)) "まれあお" (mare-ao).

並べ替えは、次に示す [Regional Control Panel] フォーマットに従って行われます。Sorting follows the Regional Control Panel format:

  • 日本語ユーザー ロケールでは次のように並びます。Under a Japanese user locale,
    • ふりがなが有効になっている場合、"の" の下に "希蒼" が並びます。If furigana is enabled, then "希蒼" is sorted under "の".
    • ふりがなが含まれていない場合、"ま" の下に "希蒼" が並びます。If furigana is missing, then "希蒼" is sorted under "ま".
  • 日本語以外のユーザー ロケールでは次のように並びます。Under a non-Japanese user locale,
    • ふりがなが有効になっている場合、"の" の下に "希蒼" が並びます。If furigana is enabled, then "希蒼" is sorted under "の".
    • ふりがなが含まれていない場合、"漢字" の下に "希蒼" が並びます。If furigana is missing, then "希蒼" is sorted under "漢字".

サンプルSamples