Android獲取指定語言字串
由於近期應用加強了對多語言的適配,所以現在應用內有n種語言(10多種),然後統計的時候產品說只要上傳英文的字串.所以對於應用內的資料,在不修改語言的前提下,要將上傳的字串統一為英語.
廢話不多說,直接附上程式碼
/**
* Created by panruijie on 2017/12/26.
* Email : [email protected]
*/
public class LanguageUtil {
public static final String TAG = "LanguageUtil";
private static final String APPNAME = "you app packagename" ;
public static final String ERROR_LABEL = "";
private static final String DEFAULT_COUNTRY = "US";
private static final String DEFAULT_LANGUAGE = "en";
public static String getStringByLocale(Context context, int stringId, String language, String country) {
/*for (Locale locale : getAvailableLocales()) {
String lang = locale.getLanguage();
String coun = getCountryPrivate(locale);
String localeStr = country.equals("") ? language : (language + "_" + country);
Loger.w("ruijie", "language = " + lang + ", country = " + coun + "," +
"localeStr = " + localeStr);
}*/
Resources resources = getApplicationResource(context.getApplicationContext().getPackageManager(),
APPNAME, new Locale(language, country));
if (resources == null) {
return ERROR_LABEL;
} else {
try {
return resources.getString(stringId);
} catch (Exception e) {
return ERROR_LABEL;
}
}
}
public static String getStringToEnglish(Context context, int stringId) {
return getStringByLocale(context, stringId, DEFAULT_LANGUAGE, DEFAULT_COUNTRY);
}
private static Resources getApplicationResource(PackageManager pm, String pkgName, Locale l) {
Resources resourceForApplication = null;
try {
resourceForApplication = pm.getResourcesForApplication(pkgName);
updateResource(resourceForApplication, l);
} catch (PackageManager.NameNotFoundException e) {
}
return resourceForApplication;
}
private static void updateResource(Resources resource, Locale l) {
Configuration config = resource.getConfiguration();
config.locale = l;
resource.updateConfiguration(config, null);
}
}
思路在於通過應用名找到對於的應用的Resources,在不修改resources的前提下,不影響當前應用的語言,獲取其資源.同理,只要知道其他應用的包名,可以獲取其所有的字串.
後來在測試種,給一個bean設定了一個字串id,如R.string.appname:
Bean bean = new Bean();
bean.setId(R.string.appname);
這樣進行設定之後,會發現錯誤.會丟擲ResourceNotFoundException,這是因為對於字串,或者圖片drawable之類進行id獲取,需要通過以下方法進行獲取:
int stringId = context.getResources().getIdentifier(resourceId, "srting", "your package name");
int drawableId = context.getResources().getIdentifier(resourceId, "drawable", "your package name");
這樣,經過這樣的方法,我們可以輕鬆的拿到字串了.用法如下:
String appName = LanguageUtil.getStringToEnglish(context, stringId);
如果要獲取指定國家和語言的字串,同理,加入國家和語言即可:
String appName = LanguageUtil.getStringByLocale(context, stringId, “en”, “US”);
相關推薦
Android獲取指定語言字串
由於近期應用加強了對多語言的適配,所以現在應用內有n種語言(10多種),然後統計的時候產品說只要上傳英文的字串.所以對於應用內的資料,在不修改語言的前提下,要將上傳的字串統一為英語. 廢話不多說,直接附上程式碼 /** * Created by pan
IOS/Android開發用遞迴法獲取指定開始字串到結尾字串中間內容
前言 最近在做ios開發的時候,突然遇到了一個需求,感覺挺有意思的就拿出來記錄一下.效果圖是這樣的: 乍一看,就是幾個特殊關鍵字變色嘛,沒什麼難的,我原本以為後臺的介面會把要變色的關鍵字單獨給我個欄位,裡面儲存一個變色字元陣列,可是當我拿到介面的時候,挺懵逼的,因為後臺給
Android 獲取指定圖片或檔案的大小
/** * 獲取指定檔案大小 */ public static long getFileSize(File file) throws Exception { long size = 0; if (file.exists()) { FileInputStrea
android 獲取指定路徑下所有檔案,將檔案從一個目錄copy到另一個目錄,執行linux命令
/** * 複製整個資料夾內容 ,可以從data/data/包名下 拷貝到 data/data/包名下。也可以copy到 /sdcard 下 * @param oldPath String 原檔案路徑 如:c:/fqf
利用java正則表示式來解析並獲取指定的字串
Java的正則表示式不僅可以用來匹配驗證字串是否符合標準型別,還可以用來解析字串,獲取自己想要得到的資料。在java.util.regex包下提供了系列的類來對字串進行匹配。來看一下下面的例子: public static String parse (String s)
android 獲取手機語言類別
判斷android裝置當前設定的為什麼語言使用Locale類中getLanguage()方法; 一般獲取到的比如中文為zh,英文為en,日文為ko; 要獲得具體的類別使用toString()方法。 比如繁體為zh_TW,簡體為zh_CN。英文中有en_GB;日文有k
Android中獲取不同語言目錄下的字串
首先建立兩個API: private final static String LAN_FR = "fr"; private final static String LAN_ES = "es"; Resources getResourcesB
android中如何獲取指定目錄下的圖片
圖片文件 tor 註意 plain mage 限制 asto tco 語句 需要對指定目錄的圖片文件進行列表,借鑒了網上的方法,發現列表出來是所有的文件,這樣用起來很不方便,在這裏也沒找到解決的辦法,經過自己的進一步研究終於搞定,發上來給有用的同學。用下面這種方式能實現查詢
Android 獲取手機的廠商、型號、Android系統版本號、IMEI、當前系統語言等工具類
parameter toc systems star lan gets post version -h 最近在開發中,需要用到一些系統信息,這裏我把這些方法寫成一個工具類方便以後復用,該工具類有以下6個功能: 1、獲取手機制造廠商 2、獲取手機型號 3、獲取手機系統當前使用
JS_正則表示式_獲取指定字元之後指定字元之前的字串
一個常見的場景,獲取:標籤背景圖片連結: 如字串:var bgImg = "url(\"https://img30.360buyimg.com/sku/jfs/t26203/262/100869187/204098/1d1479e9/5b84b80bNf39db45f.jpg\")"; 指
Android 獲取螢幕指定座標的顏色
用到的API MediaProjectionManager MediaProjection VirtualDisplay ImageReader 原理:利用Android系統提供的投影功能把螢幕投影到ImageReader中,通過ImageRead
字串遞迴獲取指定字元位置內容資訊
針對目前字串處理indexof 無法直接獲取指定到的位置字元處理 /// <summary> /// 字串擷取,獲取 /// 原字串:啊啊啊\\不不不\\擦擦擦\\嗯嗯嗯\\打算 /// 次數是1: 啊啊啊\\
[Swift]字串根據索引獲取指定字元,依據ASCII編碼實現字元和整數的快速轉換
ASCII(American Standard Code for Information Interchange,美國資訊交換標準程式碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。 它是現今最通用的單位元組編碼系統,並等同於國際標準ISO/IEC 646。
Android 播放視訊並獲取指定時間的幀畫面
轉載:https://blog.csdn.net/u011506413/article/details/51704445 Android 播放視訊並獲取指定時間的幀畫面 六.VideoView播放視訊,MediaMetadataRetriever獲取幀畫面
Qt 字串擷取 獲取指定字元位置
獲取字元在字串中的位置 QString str = "AT+LOC+LOCATION: 115.850441,33.004833"; QString s = "LOC"; str.indexOf(s); //3 str.indexOf(s, 6); //7 擷取指定位置字
獲取指定字串
題目描述 給定字串 str,檢查其是否包含 連續3個數字 1、如果包含,返回最新出現的 3 個數字的字串 2、如果不包含,返回 false 示例1 輸入 複製 '9876543' 輸出 複製 987 知識點: \w 匹配字母或數字或下劃線或漢字
如何獲取NSString的字元長度以及如何獲取指定字元長度字元的字串
//首先先新建一個NSString的Category類 //獲取NSString對應的字元長度- (int)chineseLength { int asciiCount = 0; in
Android Studio中apk簽名打包 以及獲取 應用簽名字串
在微信開放平臺,申請移動應用的時候: https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&type=app&lang=zh_CN&token=60682ddfbd9106b1c4b1f9d70f56
Java給指定URL字串新增值和獲取URL字串中的引數值
/** * 在指定url後追加引數 * @param url * @param data 引數集合 key = value * @return */ private static String appendUrl(String url, Map<String,
Android 獲取字串首字母,並對字串列表進行排序。
最近在瞭解環信的過程中,看到裡面有一個可以根據使用者名稱對使用者進行排序的處理。今天單獨測試了一下, 在此做一個整理。 由於工具類HanziToPinyin.class程式碼量有點多,我就放到最後。 先來看獲取一箇中文字串的首字母方法: /** *