Meta:国际化
元維基的目標是成為多語言維基,因此大多數頁面都應可供翻譯,並完成翻譯工作。若要透過翻譯擴充功能進行翻譯,頁面須先加上<translate>...</translate>標籤(即進行國際化處理),再由翻譯管理員標記為待翻譯。本頁旨在說明元維基上頁面國際化的相關指引。
如需將頁面標記為待翻譯的逐步教學,請參閱教學頁面。
一般提醒:若翻譯已完成,即使 <translate>標記方式未完全遵循本指引,仍請避免進行會使既有翻譯失效的編輯。 此舉將徒增翻譯志工的負擔,他們本已自願肩負繁重的工作。 |
一般指引
一般來說,你應該遵循翻譯擴充功能關於標記頁面進行翻譯的指引:在可能的情況下,請避免手動分割那些靠近</translate>標籤的翻譯單元,你應該讓空行來實現分割。
原則上,請遵循翻譯擴充功能關於頁面標記為待翻譯的指引。請盡量避免以$tag標籤手動分割翻譯單元,改以空行作為翻譯單元的分隔。
編輯已翻譯的頁面時,請勿使用章節編輯功能,否則會在頁面中產生多餘的空白字元[1]。請務必選擇編輯整頁的選項。
分段範例
| 正確寫法 | 錯誤寫法 |
|---|---|
請於標題與段落前後另起新行,加上<translate>標籤。
<translate>
== 段落標題 ==
這是其中一段。
這是另外一段。
</translate>
{{模板}}
<translate>
== 下一個段落的標題 ==
</translate>
|
標題語法(例如:==)必須納入翻譯單元中。
== <translate>段落標題</translate> ==
<translate>這是其中一段。</translate>
<translate>這是另外一段。</translate>
{{模板}}
== <translate>下一個段落的標題<translate> ==
|
請將清單各項目分割為獨立的翻譯單元,且每個項目內不可換行。清單標記(如*、#等符號)請勿納入翻譯單元中。
* <translate>這是一份長清單:</translate> ** <translate>此清單中有超過160個字</translate> ** <translate>或是有超過8個項目</translate> * <translate>所以最好將它分割成幾個較小的單元。</translate> * <translate>但我們必須將項目符號排除在翻譯標籤之外,以保持清單的可讀性。</translate> |
清單標記(例如:*或#)必須排除於翻譯單元之外。
<translate> * 這是一份長清單: ** 此清單中有超過160個字 ** 或是有超過8個項目 </translate> <translate> * 所以最好將它分割成幾個較小的單元。 * 但我們必須將項目符號排除在翻譯標籤之外,以保持清單的可讀性。 </translate> |
特定元素
連結
連結需使用特殊語法,才能正確指向目標頁面的對應語言版本。任何可能被翻譯的頁面,皆應使用本地化連結語法,即使該頁面尚未標記為待翻譯亦然。例外情形包括討論頁,以及不含文字內容的模板——這類頁面無需使用本地化連結語法。
如需連結至多語言維基上的頁面,請於連結前加上Special:MyLanguage/前綴。為簡化翻譯工作,翻譯單元中應僅納入連結文字,而非連結目標。若連結屬於較大翻譯單元的一部分(例如出現在段落中),可使用翻譯變數(<tvar name=1> … </tvar>)包覆連結目標,將其排除於翻譯單元之外。
若是連往同一維基上頁面的獨立連結(例如出現在清單或表格中),可使用本地化連結模板以簡化語法。此模板適用於元維基、mediawiki.org、外展維基,以及其他已安裝此模板的維基。
若要連結至維基百科條目,請使用{{lwp}}模板作為連結目標,並以<tvar>標籤包覆。例如,[[{{lwp|Rosa Parks}}</tvar>]]於英語頁面將輸出en:Rosa Parks,於法語頁面則會輸出fr:Rosa Parks。
對於其他跨維基連結與外部連結,若該頁面已有翻譯版本,請勿將連結目標放入tvar中。當然,若目標網站具備語言偵測機制(如MediaWiki的Special:MyLanguage/),則可運用此機制,將完整連結放入tvar中。
| 正確寫法 | 錯誤寫法 |
|---|---|
如需連結至多語言維基上的頁面,請於連結目標前加上Special:MyLanguage/前綴,並補上連結文字。請使用翻譯變數,確保翻譯單元中僅納入連結文字。
<translate> 了解[[<tvar name=1>Special:MyLanguage/Wikimedia projects</tvar>|維基媒體專案]],以及如何申請成立 [[<tvar name=2>Special:MyLanguage/New project process</tvar>|新專案]]。 </translate> |
翻譯變數應僅包含連結目標,而不應包含連結文字。
<translate> Learn about [[<tvar name=1>Special:MyLanguage/Wikimedia projects</tvar>|Wikimedia projects]] and how to request a [[<tvar name=2>Special:MyLanguage/New project process|new project</tvar>]]. </translate> |
For a standalone link to a page on the same wiki, such as in a list or a table, use Template:ll, and translate only custom link text. You can use |nsp=0 to simplify the link text by omitting the namespace.
<translate>
See also:
</translate>
* {{ll|Help:Contents|2=<translate>Help pages</translate>}}
* {{ll|Meta:Discussion pages|nsp=0}}
|
A parameter name (2=) is required when adding <translate> tags inside template syntax.
<translate>
See also:
</translate>
* {{ll|Help:Contents|<translate>Help pages</translate>}}
* {{ll|Meta:Discussion pages|nsp=0}}
|
For external links, exclude the link target from the translation unit using a translation variable.
<translate> This is a text with an [<tvar name=url>https://openstreetmap.org</tvar> external link]. </translate> |
A translation variable is required to exclude the external link target from the translation unit.
<translate> 這是一個具有[[內部連結]]和[https://openstreetmap.org 外部連結]的文字。 </translate> |
分類
您應該排除<translate>標籤中的類別宣告。取而代之,在類別名稱:[[Category:對象類別{{#translation:}}]]之後加入 {{#translation:}}。這樣,只有英文主頁面會被歸類到對象類別中,翻譯頁面會被歸類到每種語言的類別中。
| 正確寫法 | 錯誤寫法 |
|---|---|
[[Category:Wikipedia{{#translation:}}]]
|
<translate>[[Category:Wikipedia]]</translate> |
图片
縮圖和大圖像
如果圖片可以本地化 (例如它有文字且已有翻譯版存在),則應該完全包含在<translate>標籤中。
不然的話,您應該只要將alt=值包裝在<translate nowrap>標籤中,而將標題包裝在<translate>標籤中。
如果有使用 left 或 right 作為圖片的參數:無用的話,請將其移除 (在英文中,縮圖預設為靠右),否則請分別以 {{dirstart}} 或 {{dirend}} 取代。
| 正確寫法 | 錯誤寫法 |
|---|---|
[[File:landscape.jpg |thumb |{{dirstart}} |alt=<translate nowrap>日落</translate> |<translate>美麗風景的照片</translate>]]
|
<translate>
[[File:landscape.jpg |thumb |left |alt=日落 |美麗風景的照片]]
</translate>
|
<translate> [[File:英文維基百科的截圖.png|thumb|alt=Homepage of English Wikipedia with featured article and news topics|維基百科首頁]] </translate> |
[[File:英文維基百科的截圖.png|thumb|right|alt=<translate nowrap>Homepage of English Wikipedia with featured article and news topics</translate>|<translate>維基百科首頁</translate>]]
|
圖示
內嵌圖示可以簡單地包裝在 <tvar name="icon"> 中。
| 正確寫法 | 錯誤寫法 |
|---|---|
<translate> [[File:pretty hello word.png|alt=大家好!]], <tvar name="icon">[[File:smiley.png|alt=🙂]] 你好嗎? </translate> |
<translate> [[File:pretty hello word.png|alt=大家好!]], [[File:smiley.png|alt=🙂]] 你好嗎? </translate> |
翻譯變數
翻譯變數 (<tvar name="name"></tvar> 語法) 應該要用來隱藏文字,以便防止翻譯人員去翻譯。
以下範例應該被包裝在 tvar 之內:
- 可自動本地化的或不可本地化的連結對象,
- 用户名,
- 可能會改變的數字 (它們應該被包裝在
{{formatnum:}}之內,然後再被包裝到tvar之內), - 標籤屬性 (例如:
<span class="css_class" style="background-color:blue"</tvar>>hello</span>), - 模板名稱和參數 (例如:
{{<tvar name=1>center|5px</tvar>|hello}}), - 複雜 wikitext 或 HTML 的部份(但請確保翻譯者所得的wikitext是平衡的)。
以下範例應該不要被包裝在 tvar 之內:
- 人名和地名(即使很少翻譯,也可能會字母轉寫),
- 沒有屬性的XML標籤,如
<code>(翻譯介面會處理它們), - 可本地化的連結對象(即指向多語言網站的連結)。
翻譯變數名稱
為了幫助翻譯者,請儘量保持 tvar 名稱的簡短和可讀性。如果翻譯者不需要知道他們的內容,使用數字名稱是個好主意,因為數字對大多數翻譯者來說打字很快,而且在許多語言中都很常見 (這樣大多數初學者就不會不小心翻譯了)。
然而,如果 tvar 是在句子裡面,它應該有一個明確的名稱,讓翻譯者了解它包含什麼,以便會更容易寫在他們的翻譯的正確位置上(這個情形很常見的是電子郵件地址、URL、wikitext標籤名稱......)。
| 正確寫法 | 錯誤寫法 |
|---|---|
[[<tvar name="1">Special:MyLanguage/Help:Links|請參閱說明頁面]] |
[[Special:MyLanguage/Help:Links|請參閱說明頁面]] |
會議將於<tvar name="date">{{dateT||9|24}}</tvar>日在<tvar name="software">{{int string|Zoom}}</tvar>上舉行。
|
會議將於<tvar name=1>{{dateT||9|24}}</tvar>日在<tvar name=2>{{int string|Zoom}}</tvar>上舉行。
|
也要避免在 tvar 名稱中使用空格、下劃線或帶有二進位的字母。
| 正確寫法 | 錯誤寫法 |
|---|---|
<tvar name="max-count">84</tvar> cafés |
<tvar name="max_count of café">84</tvar> cafés |
模板
您可以準備某一個模板進行翻譯,就像準備任何頁面一樣,但您應該確保在標記頁面進行翻譯時,已勾選「为该页面启用翻译感知嵌入」核取方塊。
如果您要在模板呼叫的參數值內插入一個<translate>標籤,請確保該參數已命名(否則,請添加一個數值名稱,有如1=這個)。
如果預期您的模板會被包含在不可翻譯的頁面中(例如使用者頁面),甚至應該會在這些頁面中被翻譯,您可以使用帶有開關的pre-2021 hack,如在下圖所示的程式碼中用 uselang={{int:lang}} 取代 uselang={{PAGELANGUAGE}}。
Pre-2021 hacks
在MediaWiki 1.36.0-wmf.32 (2021-02-23)之前,您必應確保英文頁面是包含模板的 /en 子頁面,而不是直接包含模板。
其中一個方法是用{{TNT|my translated template|param}}來取代每一次出現的{{my translated template|param}},但在應該已包含{{ {{TNTN|my translated template}} |param}}的模板或嵌入的頁面中除外。
另一種方法是編輯模板,使其呼叫自己 {{TNT}}。為此,您應該把完整的模板程式碼放在一個開關之內,這個開關會去對一個空的 <translate> 標籤求值,預設情況下會呼叫 {{TNT}}。
{{#switch:<translate></translate>
|=<完整的模板程式碼>
|#default={{#invoke:Template translation|renderTranslatedTemplate|template={{subst:FULLPAGENAME}}|uselang={{PAGELANGUAGE}}|noshift=1}}
}}