如何转换通过Strings.XML从互联网获得的字符串?

时间:2018-09-08 13:45:30

标签: android string android-resources

我有一个可以从互联网上获取产品名称的应用。这些名称是英文的,我想通过包含其西班牙语翻译的strings.xml将它们翻译成另一个语言环境(例如西班牙语)。

<string name="pick_a_product">Pick a product</string>>
<string name="apple">Apple</string>
<string name="banana">Banana</string>
<string name="cauliflower">Cauliflower</string>
<string name="potatoes">Potatoes</string>
<string name="tomatoes">Tomatoes</string>

<string-array name="product_names">
    <item>@string/pick_a_product</item>
    <item>@string/apple</item>
    <item>@string/banana</item>
    <item>@string/cauliflower</item>
    <item>@string/potatoes</item>
    <item>@string/tomatoes</item>
</string-array>

如果该应用收到了产品“ Apple”,我希望将其翻译为“ Manzana”,反之亦然,具体取决于手机/应用的当前语言环境。我知道,要执行此操作,我必须在string.xml中搜索字符串“ apple”或“ manzana”的ID,并使用R.string.apple/manzana设置文本。但是我该怎么做呢?

这是我目前的努力。我正在适配器内进行此操作。

public class ProductAdapter extends ArrayAdapter<Product> {
private Context context;
public ProductAdapter(@NonNull Context context, int resource, @NonNull List<Product> objects) {
    super(context, resource, objects);
    this.context = context;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    if (convertView == null) {
        convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.list_item, parent, false);
    }

    TextView nameTextView = convertView.findViewById(R.id.productName);


    Product product = getItem(position);


    nameLocalised = getStringResourceByName(product.getName());
    nameTextView.setText(nameLocalised);

}

private String getStringResourceByName(String aString) {
    String packageName = context.getPackageName();
    int resId = context.getResources().getIdentifier(aString, "string", packageName);
    if (resId == 0) {
        return aString;
    } else {
        return context.getString(resId);
    }
}
}

“ getStringResourceByName” 方法中,resId始终为零。

1 个答案:

答案 0 :(得分:0)

您可以使用strings.xmlgetResources().getString(R.string.YourString);获取字符串 对于您的应用中的翻译,您可以参考官方文档here