Index: chrome/common/extensions/docs/server2/templates/articles/i18n-messages.html |
diff --git a/chrome/common/extensions/docs/server2/templates/articles/i18n-messages.html b/chrome/common/extensions/docs/server2/templates/articles/i18n-messages.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f9a66208c069bc83851e93e9405909ab48d21c60 |
--- /dev/null |
+++ b/chrome/common/extensions/docs/server2/templates/articles/i18n-messages.html |
@@ -0,0 +1,330 @@ |
+<h1>Formats: Locale-Specific Messages</h1> |
+ |
+ |
+<p> |
+Each internationalized extension has at least one |
+file named <code>messages.json</code> |
+that provides locale-specific strings for the extension. |
+This page describes the format of <code>messages.json</code> files. |
+For information on how to internationalize and localize your extension, |
+see the <a href="i18n.html">Internationalization</a> page. |
+</p> |
+ |
+<h2 id="overview"> Field summary </h2> |
+ |
+<p> |
+The following code shows the supported fields for |
+<code>messages.json</code>. |
+Only the "<em>name</em>" and "message" fields are required. |
+</p> |
+ |
+<pre> |
+{ |
+ "<a href="#name"><em>name</em></a>": { |
+ "<a href="#message">message</a>": "<em>Message text, with optional placeholders.</em>", |
+ "<a href="#description">description</a>": "<em>Translator-aimed description of the message.</em>", |
+ "<a href="#placeholders">placeholders</a>": { |
+ "<em>placeholder_name</em>": { |
+ "content": "<em>A string to be placed within the message.</em>", |
+ "example": "<em>Translator-aimed example of the placeholder string.</em>" |
+ }, |
+ ... |
+ } |
+ }, |
+ ... |
+} |
+</pre> |
+ |
+<h2 id="example"> Example </h2> |
+ |
+<p> |
+Here's a <code>messages.json</code> file |
+that defines three messages |
+named "prompt_for_name", "hello", and "bye": |
+</p> |
+ |
+<pre> |
+{ |
+ "prompt_for_name": { |
+ "message": "What's your name?", |
+ "description": "Ask for the user's name" |
+ }, |
+ "hello": { |
+ "message": "Hello, $USER$", |
+ "description": "Greet the user", |
+ "placeholders": { |
+ "user": { |
+ "content": "$1", |
+ "example": "Cira" |
+ } |
+ } |
+ }, |
+ "bye": { |
+ "message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!", |
+ "description": "Say goodbye to the user", |
+ "placeholders": { |
+ "our_site": { |
+ "content": "Example.com", |
+ }, |
+ "user": { |
+ "content": "$1", |
+ "example": "Cira" |
+ } |
+ } |
+ } |
+} |
+</pre> |
+ |
+ |
+<h2>Field details</h2> |
+ |
+<p> |
+This section describes each field |
+that can appear in a <code>messages.json</code> file. |
+For details on how the messages file is used — |
+for example, what happens when a locale doesn't define |
+all the messages — |
+see <a href="i18n.html">Internationalization</a>. |
+</p> |
+ |
+ |
+<h3 id="name">name</h3> |
+ |
+<p> |
+Actually, there's no field called "name". |
+This field's name is the name of the message — |
+the same <em>name</em> that you see in |
+<code>__MSG_<em>name</em>__</code> |
+or <code>getMessage("<em>name</em>")</code>. |
+</p> |
+ |
+<p> |
+The name is a case-insensitive key |
+that lets you retrieve the localized message text. |
+The name can include the following characters: |
+</p> |
+ |
+<ul> |
+ <li> A-Z </li> |
+ <li> a-z </li> |
+ <li> 0-9 </li> |
+ <li> _ (underscore) </li> |
+ <li> @ </li> |
+</ul> |
+ |
+<p class="note"> |
+<b>Note:</b> |
+Don't define names that begin with "@@". |
+Those names are reserved for |
+<a href="i18n.html#overview-predefined">predefined messages</a>. |
+</p> |
+ |
+<p> |
+Here are three examples of names, |
+taken from the <a href="#example">Example</a> section: |
+</p> |
+ |
+<pre> |
+"prompt_for_name": { |
+ ... |
+}, |
+"hello": { |
+ ... |
+}, |
+"bye": { |
+ ... |
+} |
+</pre> |
+ |
+<p> |
+For more examples of using names, see the |
+<a href="i18n.html">Internationalization</a> page. |
+</p> |
+ |
+ |
+<h3 id="message">message</h3> |
+ |
+<p> |
+The translated message, |
+in the form of a string that can contain |
+<a href="#placeholders">placeholders</a>. |
+Use <code>$<em>placeholder_name</em>$</code> |
+(case insensitive) |
+to refer to a particular placeholder. |
+For example, you can refer to a placeholder named "our_site" as |
+<code>$our_site$</code>, <code>$OUR_SITE$</code>, or <code>$oUR_sITe$</code>. |
+</p> |
+ |
+<p> |
+Here are three examples of messages, |
+taken from the <a href="#example">Example</a> section: |
+</p> |
+ |
+<pre> |
+"message": "What's your name?" |
+... |
+"message": "Hello, $USER$" |
+... |
+"message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!" |
+</pre> |
+ |
+<p> |
+To put a dollar sign (<code>$</code>) into the string, |
+use <code>$$</code>. |
+For example, use the following code to specify the message |
+<b>Amount (in $)</b>: |
+ |
+<pre> |
+"message": "Amount (in $$)" |
+</pre> |
+ |
+<p> |
+Although placeholders such as <code>$USER$</code> are |
+the preferred way of referring to <em>substitution strings</em> |
+(strings specified using the <em>substitutions</em> parameter of |
+<a href="i18n.html#method-getMessage"><code>getMessage()</code></a>) |
+you can also refer to substitution strings directly |
+within the message. |
+For example, the following message |
+refers to the first three substitution strings passed into |
+<code>getMessage()</code>: |
+</p> |
+ |
+<pre> |
+"message": "Params: $1, $2, $3" |
+</pre> |
+ |
+<p> |
+Despite that example, |
+we recommend that you stick to using placeholders |
+instead of <code>$<em>n</em></code> strings |
+within your messages. |
+Think of placeholders as good variable names. |
+A week after you write your code, |
+you'll probably forget what <code>$1</code> refers to, |
+but you'll know what your placeholders refer to. |
+For more information on placeholders and substitution strings, see |
+the <a href="#placeholders">placeholders</a> section. |
+</p> |
+ |
+<h3 id="description">description</h3> |
+ |
+<p> |
+<em>Optional.</em> |
+A description of the message, |
+intended to give context |
+or details to help the translator |
+make the best possible translation. |
+</p> |
+ |
+<p> |
+Here are three examples of descriptions, |
+taken from the <a href="#example">Example</a> section: |
+</p> |
+ |
+<pre> |
+"description": "Ask for the user's name" |
+... |
+"description": "Greet the user" |
+... |
+"description": "Say goodbye to the user" |
+</pre> |
+ |
+<h3 id="placeholders">placeholders</h3> |
+ |
+<p> |
+<em>Optional.</em> |
+Defines one or more substrings |
+to be used within the message. |
+Here are two reasons you might want to use a placeholder: |
+</p> |
+ |
+<ul> |
+ <li> |
+ To define the text |
+ for a part of your message |
+ that shouldn't be translated. |
+ Examples: HTML code, trademarked names, formatting specifiers. |
+ </li> |
+ <li> |
+ To refer to a substitution string passed into |
+ <code>getMessage()</code>. |
+ Example: <code>$1</code>. |
+ </li> |
+</ul> |
+ |
+<p> |
+Each placeholder has a name, |
+a "content" item, |
+and an optional "example" item. |
+A placeholder's name is case-insensitive |
+and can contain the same characters |
+as a <a href="#name">message name</a>. |
+</p> |
+ |
+<p> |
+The "content" item's value is a string |
+that can refer to substitution strings, which are |
+specified using the |
+<a href="i18n.html#method-getMessage"><code>getMessage()</code></a> method's |
+<em>substitutions</em> parameter. |
+The value of a "content" item is typically something like |
+"Example.com" or "$1". |
+If you refer to |
+a substitution string that doesn't exist, |
+you get an empty string. |
+The following table shows how |
+<code>$<em>n</em></code> strings correspond to |
+strings specified by the <em>substitutions</em> parameter. |
+</p> |
+ |
+<table> |
+<tr> |
+<th> <em>substitutions</em> parameter </th> |
+<th> Value of $1</th> |
+<th> Value of $2</th> |
+<th> Value of $3</th> |
+</tr> |
+<tr> |
+ <td> <code>userName</code> </td> |
+ <td> value of <code>userName</code> </td> |
+ <td> <code>""</code> </td> |
+ <td> <code>""</code> </td> |
+</tr> |
+<tr> |
+ <td> <code>["Cira", "Kathy"]</code> </td> |
+ <td> <code>"Cira"</code> </td> |
+ <td> <code>"Kathy"</code> </td> |
+ <td> <code>""</code> </td> |
+</tr> |
+</table> |
+ |
+<p> |
+The "example" item |
+(optional, but highly recommended) |
+helps translators by showing how the content appears to the end user. |
+For example, a placeholder |
+for a dollar amount |
+should have an example like <code>"$23.45"</code>. |
+</p> |
+ |
+<p> |
+The following snippet, |
+taken from the <a href="#example">Example</a> section, |
+shows a "placeholders" item that contains two placeholders |
+named "our_site" and "user". |
+The "our_site" placeholder has no "example" item |
+because its value is obvious from the "content" field. |
+</p> |
+ |
+<pre> |
+"placeholders": { |
+ "our_site": { |
+ "content": "Example.com", |
+ }, |
+ "user": { |
+ "content": "$1", |
+ "example": "Cira" |
+ } |
+} |
+</pre> |