簡體   English   中英

在PHP,Wordpress,phpMyAdmin,C,i18n,L10n等雙下划線?

[英]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在實現工作系統方面的接近程度。


區域支持

在這一步,我做了一些注意事項:使用i18nL10n上的重量的區域設置支持

它經常被使用,如與WP23及(在有據可查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

你公開的下一層代碼可能會引用變量名,函數和文件名等相當神秘的約定,如i18nl10n

一旦你知道他們的意思他們是非常方便的,定義可能有點模糊。 一般來說,我們有:

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關於這個主題的簡短而簡潔的版本是:

  • 國際化(I18N):使軟件可能處理多個區域設置。
  • 本地化(L10N):使軟件處理特定的區域設置。

域名的使用

通常,在查看代碼,閱讀等本地化時,會遇到的使用。 一個更友好的搜索引擎 -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/
…

與GetText一起使用的文件

如果您查看例如PMA,您將找到一個名為locale的目錄。 它包含各種語言的各種目錄。 這些文件的擴展名為.mo 這是GetText特定文件。 一個通常從PO,可移植對象開始,文件是純文本文件。 它們被索引並編譯為MO,機器對象,這些文件被索引以進行優化。 更多關於此這里 (同上述PMA -link)。


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM