mirror of
https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
synced 2025-08-30 00:35:58 +02:00
62 lines
4.9 KiB
Plaintext
62 lines
4.9 KiB
Plaintext
<!-- 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]。
|