我正在使用Android Studio中的应用程序。我设法将我的应用程序连接到firebase
,我从中获取了一些英文图像和说明。由于我希望我的应用程序支持多种语言,有没有办法将这些数据从数据库转换为我的Android应用程序中的其他语言?
我知道如何使用strings.xml
对静态数据进行处理,但我想知道如果从firebase
加载数据,我可以这样做吗?
编辑***
我使用RecyclerView和CardView从firebase中提取图像及其描述。为了那个我使用:
图像类(POJO类)
图片适配器类
public class ImageAdapter extends RecyclerView.Adapter<ImageViewHolder> {
ArrayList<Image> mImages;
public ImageAdapter(ArrayList<Image> mAds)
{
this.mImages = mAds;
}
@Override
public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_item, parent, false);
return new ImageViewHolder(inflatedView);
}
public void onBindViewHolder(ImageViewHolder holder, int position) {
final Image image = mImages.get(position);
holder.bindAd(image);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Toast.makeText(view.getContext(), "Hello", Toast.LENGTH_SHORT).show();
//Open New Activity show details about advertisment
Intent intent = new Intent(view.getContext(), ImageDetails.class);
intent.putExtra("ad",image);
view.getContext().startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mImages.size();
}
}
图片视图持有者类:
public class ImageViewHolder extends RecyclerView.ViewHolder {
private ImageView mAdImage;
private TextView mAdName;
public ImageViewHolder(View itemView) {
super(itemView);
mAdImage = (ImageView) itemView.findViewById(R.id.ad_image);
mAdName = (TextView) itemView.findViewById(R.id.ad_name);
}
public void bindAd(Image ad) {
mAdName.setText(ad.name);
Glide.with(mAdImage.getContext()).load(ad.image1).into(mAdImage);
}
}
ImageDetails类(单击图像时,将打开其描述)
public class ImageDetails extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_details);
// TO DO
//Ad ad = (Ad) savedInstanceState.getSerializable("ad");
ImageView imageView = (ImageView) findViewById(R.id.imageAdDetails);
TextView textView = (TextView) findViewById(R.id.textAdDetails);
TextView textDesc = (TextView) findViewById(R.id.descriptionAdDetails);
if (getIntent().hasExtra("ad")) {
Image ad = (Image) getIntent().getSerializableExtra("ad");
textView.setText(ad.name);
textDesc.setText(ad.AdDescription);
Glide.with(imageView.getContext()).load(ad.image1).into(imageView);
}
}
}
答案 0 :(得分:0)
我想到的第一个想法是在数据库中为其他语言版本复制带有说明的节点。 假设您有一个节点“ image_descriptions”,其子节点为(img1_description,img2_description等)。 想象一下,您需要将描述翻译成西班牙语,并在应用程序配置中设置了西班牙语语言环境后使用它们。
因此,将数据库引用实例化到image_descriptions节点的行将如下所示:
DatabaseReference descriptionsRef = FirebaseDatabase.getInstance().getReference(getString(R.string.image_description)
相关语言将根据所选的语言环境自动显示。