2016-03-20 5 views
0

Android'de İngilizce ve diğer diller için SQLite veritabanı dosyaları oluşturmak ve dize değerleri gibi davranmak için bir yetenek var mı? Tek yapmam gereken tek bir kodla başa çıkmak ve Android cihaz diline göre uygun veri tabanını seçmektir. Bu yerelleştirilmiş dosyaların her birindedize değerleri gibi birçok dil için android SQLite veritabanı nasıl oluşturulur

/res 
| 
----/values 
| | 
| ---- strings.xml <-- contains your default language values (english for example) 
| 
----/values-de 
| | 
| ---- strings.xml <-- contains your german languages values 
| 
----/values-fr 
| | 
| ---- strings.xml <-- contains your french languages values 
| 
(etc) 

veri erişim kodunun dile özgü parametreleri tanımlamak:

+0

Gereksinim duyduğunuz kadar çok veritabanı oluşturabilirsiniz. Sadece onlara tüm farklı isimleri ver. –

+0

Veya birden çok tablo içeren tek bir veritabanı oluşturabilirsiniz. Ya da dili gösteren bir alana sahip bir tablo içeren bir veritabanı oluşturabilirsiniz. –

+0

Yorumunuz için teşekkür ederiz. Ama sadece dize gibi isim dükkanı ile birçok veritabanları oluşturmak istiyorum ama dil shop-fr, shop-ar ... vb farklı olacak ve android seçtikleri gibi otomatik olarak bunlardan birini seçin sicim –

cevap

3

Bunu geride kalan values lokalize kaynaklar dizinleri kullanabilirsiniz.

  • varsayılan strings.xml dosya:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <string name="db_name">myDatabase_EN</string> 
    ... 
    </resources> 
    
  • "-de" strings.xml dosyası:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <string name="db_name">myDatabase_DE</string> 
        ... 
    </resources> 
    
  • "-fr" strings.xml Bu örnekte, bu veritabanının dosya adıdır dosya:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <string name="db_name">myDatabase_FR</string> 
        ... 
    </resources> 
    

Ayrıca, uygulamanızın kullandığı her dil için de geçerlidir. Daha sonra, Context.getString(int resId) kullanımı sayesinde veritabanı dosyası seçimi kodunuz için şeffaf hale gelir. Bu yöntem, kullanıcının cihazına (Locale) karşılık gelen kaynağı otomatik olarak String s seçer. öntanımlıyı olanı seçer getString() hiçbir yerelleştirilmiş String maç olmalı: Bu örnekte

private static class DatabaseHelper extends SQLiteOpenHelper { 

    ... 

    private DatabaseHelper(Context ctx) { 
     super(ctx, ctx.getString(R.string.db_name), null, dbVersion); 
     // R.string.db_name corresponds to the localized String 
     // resource "db_name", based on the users's device Locale. 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     ... 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     ... 
    } 

    ... 

} 

farklı bir veritabanı dile bağlı olarak açılan edilir. Ancak, aynı şekilde, benzersiz bir veritabanındaki farklı tablolara erişmeye veya veritabanınızın çeşitli tablolarından farklı alanları seçmeye karar verebilirsiniz.

İlgili konular