Android Studio-在string.xml中获取数组字符串的项目的翻译

时间:2018-08-27 22:41:19

标签: android arrays android-studio language-translation string.xml

我有一个应用程序,使用户有权从 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)。

我希望我的意图清楚。

2 个答案:

答案 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个单独的数组中,并使用每个数组的相应值。