我只是測試Android的本地化和我發現,你可以使用任意的區域,它會工作。
一個文件夾添加到項目,名稱,如values-sr-rZZ
其中ZZ是從來不存在一個虛構的區域。
然後將以下代碼添加到應用程序類,我從here得到它,略有變化:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Resources res = this.getResources();
Configuration conf = res.getConfiguration();
boolean isLatinAlphabet = PreferenceManager.getDefaultSharedPreferences(this)... // get a value from the application settings
if(conf.locale.getLanguage().equals("sr") && isLatinAlphabet) {
conf.locale = new Locale("sr", "ZZ");
res.updateConfiguration(conf, res.getDisplayMetrics());
}
}
}
在這個代碼僅當用戶選擇了塞爾維亞語言設置爲默認的語言環境將被改變(conf.locale.getLanguage().equals("sr")
),並在應用偏好設置中選中了一些複選框(isLatinAlphabet
)。
您可以使用不同的條件,並改變它,只要你喜歡。
此類動態改變語言的方式可能會在舊設備上出現菜單項的錯誤,但不會在較新的設備上重現。
如果你打開手機設置 - >語言和輸入法,只有1塞爾維亞語言,它是西里爾。用戶應該如何選擇字母表?他們不能通過使用手機設置來做到這一點。 – vorrtex 2013-03-20 09:29:46
@vorrtex我想讓應用程序設置中的語言更改。而在應用程序中,我想要一種語言(即使電話是用其他語言)。我知道如何更改應用程序中的語言,但我不知道如何包含同一種語言的2個版本。 – 2013-03-20 13:06:50
如果你使用自己的設置,那麼你應該自己管理文件。也許將它們存儲在數據存儲器中並動態地重寫所有字符串,但這似乎並不容易。 – vorrtex 2013-03-20 13:50:30