<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>データ構造</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>多言語文字列対</anchor> </sw-see></p></section><section><h1>データ形式</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ソフトウェア</anchor>における翻訳テキストのファイル形式一覧:</p><figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PO</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">POT</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MO</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Android string resource</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.strings</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.stringsdict</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.properties</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">properties XML</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XUL DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">messages.json</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Rails I18n</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XLIFF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.resx</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.resw</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.restext</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.resjson</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.resources</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Symfony Translation</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">YAML</anchor>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i18next</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">angular-translate</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Hatena.Locale</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON</anchor>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GSI/SDF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TS file format</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QM</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.qph</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">catkeys</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LDML</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XMB</anchor></li><li><code>translationbundle</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MessageFormat</anchor></li></ul></figure></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">多言語化</anchor>も参照。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">Help:Extension:Translate/File format support - MediaWiki</cite> (<time>2015-02-15 14:44:31 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.mediawiki.org/wiki/Help:Extension:Translate/File_format_support">https://www.mediawiki.org/wiki/Help:Extension:Translate/File_format_support</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite>Mac Notes - The Chromium Projects</cite>
(<time>2015-03-21 10:14:33 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.chromium.org/developers/design-documents/ui-localization/mac-notes">https://www.chromium.org/developers/design-documents/ui-localization/mac-notes</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <cite xml:lang="en">Creating resource bundles supporting I18N | Alfresco Documentation</cite>
(<time>2015-07-14 23:38:58 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://docs.alfresco.com/4.2/tasks/ws-I18N.html">http://docs.alfresco.com/4.2/tasks/ws-I18N.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <cite xml:lang="en">Overriding the default message bundle | Alfresco Documentation</cite>
(<time>2015-07-14 23:40:04 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://docs.alfresco.com/4.2/concepts/kb-preset-internationalization.html">http://docs.alfresco.com/4.2/concepts/kb-preset-internationalization.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite>Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)</cite>
(<time>2015-01-27 11:24:04 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://w3c.github.io/packaged-webapps/packaging/#folder-based-localization-0">http://w3c.github.io/packaged-webapps/packaging/#folder-based-localization-0</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en">globalize/load-messages.md at master · jquery/globalize</cite>
(<time>2016-01-09 23:46:31 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/jquery/globalize/blob/master/doc/api/message/load-messages.md">https://github.com/jquery/globalize/blob/master/doc/api/message/load-messages.md</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite>Free trial and pricing plans - Contentful</cite>
(<time>2016-11-08 00:13:02 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.contentful.com/pricing/">https://www.contentful.com/pricing/</anchor-external></figcaption><blockquote><p>It's a feature that helps you keep your content in different languages. You can define up to 100 locales per space, using ISO locale codes like en-US or de-DE. Each field of an entry is localized individually and you can also provide localized variants of media assets.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite xml:lang="en">Ember.js - Ember.String</cite>
(<time>2017-04-14 10:42:54 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://emberjs.com/api/classes/Ember.String.html#method_loc">https://emberjs.com/api/classes/Ember.String.html#method_loc</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">Feedback from Mozilla on the i18n API · Issue #54 · browserext/browserext</cite>
(<time>2018-03-19 22:32:43 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/browserext/browserext/issues/54">https://github.com/browserext/browserext/issues/54</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite xml:lang="en">Project Fluent</cite>
(<time>2018-02-20 23:02:28 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://projectfluent.org/">http://projectfluent.org/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <cite xml:lang="en">i18n: Passing placeholders by position is counterproductive · Issue #49 · browserext/browserext</cite>
(<time>2018-03-19 22:38:56 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/browserext/browserext/issues/49">https://github.com/browserext/browserext/issues/49</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> (<time>2017-09-12 13:57:57 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://i18n.kinza.jp/#!/">https://i18n.kinza.jp/#!/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Crowdin</anchor></p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite xml:lang="ja">㆑さんはTwitterを使っています: 「このコンセプトでこのローカリ品質、大丈夫!? もうちょっと研磨してほしい https://t.co/22js5qXiJt https://t.co/JoHCiLAb4D」 / Twitter</cite>, <time>2022-06-14T03:37:19.000Z</time>, <time>2022-06-14T03:56:18.889Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://twitter.com/Wartemeinnicht/status/1528963607819563009">https://twitter.com/Wartemeinnicht/status/1528963607819563009</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <cite xml:lang="ja">㆑さんはTwitterを使っています: 「@lye_ ですよね… 今中国語のトレイラーも見てみましたが、ドイツ語はやはりドイツ人、ポーランド語はやはり「「「研磨」」」で腹筋が持ちません https://t.co/XY30WgluJT」 / Twitter</cite>, <time>2022-06-14T03:37:19.000Z</time>, <time>2022-06-14T03:56:31.562Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://twitter.com/Wartemeinnicht/status/1528967186152185857">https://twitter.com/Wartemeinnicht/status/1528967186152185857</anchor-external></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">英語</anchor>のテキストをベースに他の言語が1対1対応すると思って設計したらこうなる?</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <cite xml:lang="ja">アプリをローカライズする | Android デベロッパー | Android Developers</cite>, <time>2022-09-02T09:24:09.000Z</time>, <time>2022-09-02T12:13:03.716Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.android.com/guide/topics/resources/localization">https://developer.android.com/guide/topics/resources/localization</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <cite xml:lang="ja">「&quot;read&quot; になることはできませんでした」のひみつ</cite>, <time>2003-10-03T04:57:38.000Z</time>, <time>2023-07-07T02:17:51.388Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.imou.to/~AoiMoe/column/win/could-not-be.html">http://www.imou.to/~AoiMoe/column/win/could-not-be.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <cite xml:lang="ja">Xユーザーの大貫剛🇺🇦🇯🇵З Україноюさん: 「日本語の「しないですか?」を英訳すると「Don't you do?」だが、日本語で「はい、しません」と答える場合、英語だと「No, I don't」になるからなあ。 英語を訳して「表示しないですか?」になってる場合、「はい」を選択すると「表示しない」になる可能性はある。」 / X</cite>, <time>午前11:58 · 2023年8月16日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2023-08-16T02:58:15.000Z</attrvalue></time>, <time>2023-08-20T06:50:33.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://twitter.com/ohnuki_tsuyoshi/status/1691645519372931132">https://twitter.com/ohnuki_tsuyoshi/status/1691645519372931132</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <cite xml:lang="ja">Ubuntu23.10のウクライナ語翻訳で悪意ある翻訳が発見。一時公開中止に | スラド Linux</cite>, <time>2023-10-18T02:01:48.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://linux.srad.jp/story/23/10/16/1414248/">https://linux.srad.jp/story/23/10/16/1414248/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 
<cite xml:lang="ja">Xユーザーの百谷涼花さん: 「yyyy/MM/ddが訳されることあるんだ https://t.co/qJBPK21O9V」 / X</cite>, <time>午後6:39 · 2024年6月10日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2024-06-10T09:39:41.000Z</attrvalue></time>, <time>2024-06-12T03:18:19.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/pepepper_cpp/status/1800100514417500671">https://x.com/pepepper_cpp/status/1800100514417500671</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Genshi</anchor> (<code>http://genshi.edgewall.org/i18n</code>)</p></section></body></html>