2013-03-20 43 views
4

我有一個Android應用程序,我想翻譯成塞爾維亞語,我想語言的兩種變體:用拉丁字母和用西裏爾字母。 我嘗試這樣的變體:value-sr-rRS-Latn , value-sr-Latn , value-sr-rRS-Cyrl , value-sr-Cyrl 但不是正在工作。 我收到此錯誤:android-apt-compiler: [NAMEOFAPP] invalid resource directory name: [path]\res/value-sr-rRS-Latn如何包含2種塞爾維亞語言的變體?用拉丁字母和用西裏爾字母

關於資源管理器和區域設置的Android文檔我無法找到此選項。

我可以做2個迪爾斯與語言的2種型號?如何?

謝謝

+0

如果你打開手機設置 - >語言和輸入法,只有1塞爾維亞語言,它是西里爾。用戶應該如何選擇字母表?他們不能通過使用手機設置來做到這一點。 – vorrtex 2013-03-20 09:29:46

+0

@vorrtex我想讓應用程序設置中的語言更改。而在應用程序中,我想要一種語言(即使電話是用其他語言)。我知道如何更改應用程序中的語言,但我不知道如何包含同一種語言的2個版本。 – 2013-03-20 13:06:50

+0

如果你使用自己的設置,那麼你應該自己管理文件。也許將它們存儲在數據存儲器中並動態地重寫所有字符串,但這似乎並不容易。 – vorrtex 2013-03-20 13:50:30

回答

1

我只是測試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)。

您可以使用不同的條件,並改變它,只要你喜歡。

此類動態改變語言的方式可能會在舊設備上出現菜單項的錯誤,但不會在較新的設備上重現。

0

由於Android 7.0,用拉丁文字塞爾維亞已正式被列入。 values-sr仍然用於西里爾文腳本,values-b+sr+Latn用於拉丁腳本。

values-sr西里爾
values-b+sr+Latn拉丁

相關問題