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

<!-- 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]。