[英]Double Underscore in PHP, Wordpress, phpMyAdmin, C, i18n, L10n etc?
引用另一個在此結束我的問題。
這些PHP代碼行中的雙重下划線是什么意思?
$WPLD_Trans['Yes']=__('Yes',$WPLD_Domain);
$WPLD_Trans['No']=__('No',$WPLD_Domain);
關於在Wordpress等中使用__()
, _()
等的相關問題。
作為上述一個答案開始,和其他相關。 但是作為自己的問題(帶答案)發布,因為它變得更加詳細。
請隨時編輯和改進 - 或輸入更好的答案/問題。
__(…)
的用法 各種實現使用雙下划線。 提到Wordpress(WP),phpMyAdmin(PMA)是另一個,依此類推。
它反映了本機PHP函數 gettext()
,它在PHP中有一個別名作為單個下划線 : _()
。 這不是PHP獨有的。 Gettext本身就是一個長期的GNU項目,用於在Unix系統上編寫多語言程序。 我們在各種編程語言中找到_()
別名。
在謙虛/誠實的觀點中,人們可以說, _()
作為本機和__()
作為gettext
自定義實現,或其他特定於語言環境的用途,是唯一有效的 - 因為它是一個完善的慣例。 另一方面它並不好 ,但即使如此簡潔。 例如,在ANSI-C標准中,雙下划線__
保留用於編譯器的內部使用; 並且由於PHP與C密切相關,因此它們保留了它,並且通常它甚至不是跨語言混合的最好的東西(恕我直言),它是在邊界/薄冰/等。
( 這里的一個問題是選擇UnderscoreJS使用_
作為與語言支持無關的東西的基礎。 )將它與prototype.js的$
和$$
混合使用並且可能有一些理解為什么有人會抓住他們的頭看__()
- 特別考慮到PHP和JS在實現工作系統方面的接近程度。
在這一步,我做了一些注意事項:使用i18n
和L10n
上的重量的區域設置支持 。
它經常被使用,如與WP , 2 , 3及(在有據可查 ) PMA ,通過給語言支持。 例如:
__('Error');
會產生Feil
在挪威或Fehler
德語。 但是,需要注意的一件重要事情是,在同一領域,我們有更多的直接翻譯,還有其他在不同語言環境/文化/語言中找到的怪癖。
例如(指定):
有些語言使用逗號 - ,
- 作為小數分隔符,其他語言使用點 - .
- 出於同樣的目的。 其他典型的區域變化是厘米與英寸,日期格式,12對24小時時鍾,貨幣等。所以:
NUMBER LEN TIME LANG1: 3,133.44 2.00 inch 5:00 PM LANG2: 3.133,44 5,08 cm 17:00
你公開的下一層代碼可能會引用變量名,函數和文件名等相當神秘的約定,如i18n
或l10n
。
一旦你知道他們的意思他們是非常方便的,定義可能有點模糊。 一般來說,我們有:
i18n: Internationalization l10n: Localization (Often L10n) g11n: Globalization (Used by e.g. IBM and Sun Microsystems) l12y: Localizability (Microsoft) m17n: Multilingualization (Continuum between internationalization and localization) ... And so on.
艾希,我的頭疼。
數字是指第一個和最后一個字母之間的單詞中的字母數。 之前和之后的字母 - 是單詞中的第一個和最后一個字母。 唷。 所以:
i18n l10n internationalization localization | | | | +-- 18 letters --+ +-- 10 --+ i 18 n l 10 n
(我們還有更強大的數字名稱 ,不遵循像G8
(八國集團)這樣的慣例 - 但是我們不在編程領域 - 或者我們是誰?)。
然后到定義:
W3C對國際化 (i18n)和本地化 (l10n)有一個相當明智的定義。
國際化(i18n)是產品,應用程序或文檔內容的設計和開發, 可以為文化,地區或語言不同的目標受眾輕松進行本地化。
本地化(本地化),指的是產品,應用程序或文檔內容的調整 ,以適應語言,具體的目標市場(一個區域)的文化等方面的要求。
debian關於這個主題的簡短而簡潔的版本是:
通常,在查看代碼,閱讀等本地化時,會遇到域的使用。 一個更友好的搜索引擎 -name可能是Translation Domain
。
( 這里我有點薄冰。 )
簡而言之,可以將其定義為上下文 。 作為基礎,您有一個區域設置。 比如蘇格蘭。 但是你可以進一步定義一個域作為主題,專業等的一部分。例如,編程中的Java與咖啡店有很大不同。 或者在一個關於女性與農業的退化網站上的牛 。
提供一些線索的頁面是repoze.org:
翻譯目錄通常是:
/path/to/your/translation_root/en_US/LC_MESSAGES/ /path/to/your/translation_root/en_GB/LC_MESSAGES/ /path/to/your/translation_root/nn_NO/LC_MESSAGES/ …
如果您查看例如PMA,您將找到一個名為locale
的目錄。 它包含各種語言的各種目錄。 這些文件的擴展名為.mo
。 這是GetText特定文件。 一個通常從PO,可移植對象開始,文件是純文本文件。 它們被索引並編譯為MO,機器對象,這些文件被索引以進行優化。 更多關於此這里 (同上述PMA -link)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.