Files
rappaurio-sae501_502/app/node_modules/cejs/application/locale/README.wiki
2023-09-25 13:27:24 +02:00

62 lines
4.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- The first line is blank due to BOM -->
= CeJS internationalization mechanism 國際化機制 =
== Introduction 簡介 ==
本函式庫採用一支小工具 [https://github.com/kanasimi/CeJS/blob/master/_build/build.nodejs.js _build/build.nodejs.js] 來同步原始碼以及 translatewiki 推送的本土化訊息 json 檔案。假如您也管理著 JavaScript 項目,非常歡迎您一同參與開發。
現行 CeJS 本土化訊息存放在4個地方。
; 1. <b>IETF language tag</b>.js
: 程式執行時實際採用的是 [https://github.com/kanasimi/CeJS/tree/master/application/locale/resources application/locale/resources]/<b>IETF language tag</b>.js這些檔案將由 _build/build.nodejs.js 自動生成。
; 2. <b>ISO 639-1 language tag</b>.json
: [https://translatewiki.net/wiki/Translating:Colorless_echo_JavaScript_kit cejs@translatewiki] 每個禮拜會匯入兩次本土化訊息至 [https://github.com/kanasimi/CeJS/tree/master/application/locale/resources/i18n application/locale/resources/i18n]/<b>ISO 639-1 language tag</b>.json 。[https://translatewiki.net/wiki/Special:Contributions/FuzzyBot FuzzyBot] 每一至三日會將原始碼的變更更新到 translatewiki 上。
; 3. qqq_data.json
: 這是紀錄 qqq.json 和原始訊息的 cache 檔。
; 4. 原始程式碼中
: 原始程式碼的訊息前,必須包含 <code>// gettext_config:{}</code> 標記,在換行之前的內容會被視為 JSON 解析。例如
:: <code>// gettext_config:{"id":"message-id"}</code>
: 在 <code>gettext_config</code> 標記之後緊接著一行,第一個字串會被視為原始訊息。採用 <code>// gettext_config:{"qqq":"notes"}</code> 會自動轉成 <code>// gettext_config:{}</code>。
_build/build.nodejs.js 生成 application/locale/resources/ 下的 .js 檔時,會以原先的 resources/qqq_data.json, <b>IETF language tag</b>.js 為基礎、將之當作舊版本,參考 translatewiki 匯入的本土化訊息與原始碼的訊息來更新將所有3處內容更新為後兩者修改過的訊息。在執行 build.nodejs.js 時,若 translatewiki 和原始碼有衝突,會跳出錯誤。[https://translatewiki.net/wiki/FAQ#Special_private_language_codes_qqq,_qqx 翻譯說明 qqq] 的產生模式可參考 resources/i18n/qqq.json, resources/qqq_data.json。
== Translation Notes ==
=== Plural form ===
This project CeJS supports the [https://www.mediawiki.org/wiki/Help:Magic_words#Localization MediaWiki forms] <code><nowiki>{{PLURAL:%1|one|other}}</nowiki></code> and <code><nowiki>{{PLURAL:%1|1=one|2=two|other}}</nowiki></code> mentioned in [[Plural#Plural syntax in MediaWiki]]. It uses the plural rules listed [https://github.com/wikimedia/mediawiki-extensions-Translate/blob/master/data/plural-gettext.txt here].
Please note: CeJS uses percentage symbol %1, %2 instead of string symbol $1.
See also: [[Thread:Portal talk:Ru/Plural changes in many languages]]
; The [[Plural#Plural in Gettext|"GETTEXT" forms]] is NOT supported: <del><code><nowiki>{{PLURAL:GETTEXT|%1 one|%1 two|%1 other}}</nowiki></code></del>. Please use the MediaWiki plural forms.
==== Examples ====
; en
: <code><nowiki>{{PLURAL:1|page|pages}}</nowiki></code> → page
: <code><nowiki>{{PLURAL:2|page|pages}}</nowiki></code> → pages
; fr
: <code><nowiki>{{PLURAL:0|one or zero|other}}</nowiki></code> → one or zero
: <code><nowiki>{{PLURAL:1|one or zero|other}}</nowiki></code> → one or zero
: <code><nowiki>{{PLURAL:2|one or zero|other}}</nowiki></code> → other
: <code><nowiki>{{PLURAL:3|one or zero|other}}</nowiki></code> → other
; zh
: <code><nowiki>{{PLURAL:1|page|pages}}</nowiki></code> → page
: Special case: <code><nowiki>{{PLURAL:2|page|pages}}</nowiki></code> → pages
: <code><nowiki>{{PLURAL:1|字}}</nowiki></code> → 字
: <code><nowiki>{{PLURAL:2|字}}</nowiki></code> → 字
; [https://www.mediawiki.org/wiki/Help:Magic_words/ru#Локализация ru]
: Special case: <code><nowiki>{{PLURAL:5|1=Категория|Категории}}</nowiki></code> → Категории
: <code><nowiki>{{PLURAL:3|страница|страницы|страниц}}</nowiki></code> → страницы
: <code><nowiki>{{PLURAL:5|страница|страницы|страниц}}</nowiki></code> → страниц
: <code><nowiki>%1 {{PLURAL:%1|байт|байта|байтов}}</nowiki></code> for %1=0 → 0 байтов
: <code><nowiki>%1 {{PLURAL:%1|байт|байта|байтов}}</nowiki></code> for %1=1 → 1 байт
: <code><nowiki>%1 {{PLURAL:%1|байт|байта|байтов}}</nowiki></code> for %1=2 → 2 байта
== Git push 更新方法 ==
每次更新前必須 git pull --rebase 加上 stash。
若忘了 pull 就直接 push出現衝突則需要 fetch + rebase (using git sync of TortoiseGit)。重新 git push --force-with-lease。
== License 軟體授權條款 ==
application/locale/resources/i18n/ 目錄中的翻譯由 translatewiki 提供,基於 [https://creativecommons.org/licenses/by/3.0/ CC BY 3.0]。