簡體   English   中英

將Java語言輸出轉換為Joomla語言輸出

[英]Converting java language output to Joomla language output

在Java中,如果我運行:

Locale.getDefault().toString()

我得到zh_tw

我將其發送到joomla網站並設置如下語言:

$lang = &JFactory::getLanguage();
$lang->setLanguage( $_GET['lang'] );
$lang->load();

但是,該站點需要以下格式zh-TW

看來,如果不是那種確切的格式,語言將不會改變。 在Java或php中是否有某個函數可以為我轉換格式?

我意識到自己可以這樣編寫方法:

    public static String convertLanguageToJoomlaFormat(String lang) {
    String[] parts = lang.split("_");
    if(parts.length ==2)
        return parts[0]+"-"+parts[1].toUpperCase();
    return lang;
}

但不確定在任何情況下特定語言的格式都會更改。

根據Java API文檔,Locale.toString()是:

整個語言環境的程序名稱的Getter,語言,國家/地區和變體之間用下划線分隔。 語言總是小寫,國家總是大寫。 如果缺少該語言,則字符串將以下划線開頭。 如果缺少語言和國家/地區字段,則即使填寫了變體字段,此函數也將返回空字符串(您不能使用僅包含變體的語言環境-變體必須隨附有效的語言或國家/地區代碼)。 例如:“ en”,“ de_DE”,“ _ GB”,“ en_US_WIN”,“ de__POSIX”,“ fr__MAC”

Joomla 1.5聲稱使用IETF RFC3066作為語言環境名稱: http ://tools.ietf.org/html/rfc3066,但實際上,它始終使用標識符的語言和國家/地區代碼部分,例如[en-GB]。

當Java語言環境沒有國家/地區部分時,就會出現問題。 在這種情況下,您可以使用“ hack”,將語言代碼的大寫版本用作國家/地區代碼:

String[] tokens = locale.toString().split("_");
if (tokens.length >= 2 && tokens[1].length() == 2) {
    joomlaName = tokens[0]+"-"+tokens[1];
} else {
    joomlaName = tokens[0]+"-"+tokens[0].toUpperCase();
}

暫無
暫無

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

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