我有一个应用程序,使用户有权从 string.xml 中的数组中选择一项:
<array-string name="countries">
<item>USA</item>
<item>UK</item>
</array-string>
和转换为中文的string.xml 中的另一个数组:
<array-string name="countries">
<item>美国</item>
<item>联合王国</item>
</array-string>
例如,该应用有两个TextViews
,我希望用户选择中文的某个国家/地区,第一个TextView
用中文显示值,第二个用英语显示值(来自默认的string.xml)。
我希望我的意图清楚。
答案 0 :(得分:1)
如果您有用于不同语言环境的各种res文件夹,则可以执行以下操作:
Configuration conf = getResources().getConfiguration();
conf.locale = new Locale("pl");
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Resources resources = new Resources(getAssets(), metrics, conf);
String str = resources.getString(id);
如果您的最低SDK> 17,请尝试
@NonNull Resources getLocalizedResources(Context context, Locale desiredLocale) {
Configuration conf = context.getResources().getConfiguration();
conf = new Configuration(conf);
conf.setLocale(desiredLocale);
Context localizedContext = context.createConfigurationContext(conf);
return localizedContext.getResources();
}
答案 1 :(得分:1)
// user-auth.service.ts
export class UserAuthService {
usersCollection: AngularFirestoreCollection<User>;
user: Observable<firebase.User>;
isAdmin: boolean;
constructor(private afAuth: AngularFireAuth,
private afs: AngularFirestore) {
this.usersCollection = this.afs.collection('users');
this.user = afAuth.authState;
this.user.subscribe(user => {
if (user === null) {
this.isAdmin = false;
} else {
this.usersCollection.doc(`${user.uid}`).ref.get().then((doc) => {
this.isAdmin = doc.data().admin; <-- THIS.ISADMIN ASSIGNED VALUE HERE
});
}
});
}
的翻译版本不用于此目的。
它们用于提供语言环境的字符串资源。
由于您需要使用相同的语言版本的应用程序,因此中文和英文值都应放在相同的默认strings.xml
中,并给它们分别提供strings.xml
和{{ 1}}。
然后使用适当的名称将它们加载到2个单独的数组中,并使用每个数组的相应值。