【问题标题】:Multiple language support does not work for just one string value Why?多语言支持不适用于一个字符串值 为什么?
【发布时间】:2020-12-10 07:50:56
【问题描述】:

我有一个支持多种语言“英语”和“土耳其语”的应用程序。但是,当我将手机语言从英语更改为土耳其语时,所有屏幕语言都会发生变化,但只有一个屏幕文本视图没有变化,我已经搜索过但没有找到解决方案。这是我在更改手机语言时支持语言的结构:

这里是英文的strings.xml:

<resources>
    <string name="app_name">KYC SDK App</string>
    <string name="capture_button_alt">Capture</string>
    <string name="switch_camera_button_alt">Switch camera</string>
    <string name="gallery_button_alt">Gallery</string>
    <string name="back_button_alt">Back</string>
    <string name="share_button_alt">Share</string>
    <string name="share_hint">Share using</string>
    <string name="capture_mode_camera">Camera</string>
    <string name="capture_mode_hdr">HDR</string>
    <string name="capture_mode_night">Night</string>
    <string name="delete_button_alt">Delete</string>
    <string name="delete_dialog">Delete current photo?</string>
    <string name="delete_title">Confirm</string>
    <string name="timer">00:30</string>
    <string name="blink_description">Blink your eyes!</string>
    <string name="keep_card_description">Keep going to hold the card!</string>
</resources>

这是土耳其语的 strings.xml:

<resources>
    <string name="app_name">KYC SDK App</string>
    <string name="capture_button_alt">Çek</string>
    <string name="switch_camera_button_alt">Kamerayı Çevir</string>
    <string name="gallery_button_alt">Galeri</string>
    <string name="back_button_alt">Geri</string>
    <string name="share_button_alt">Paylaş</string>
    <string name="share_hint">Paylaş</string>
    <string name="capture_mode_camera">Kamera</string>
    <string name="capture_mode_hdr">HDR</string>
    <string name="capture_mode_night">Gece</string>
    <string name="delete_button_alt">Sil</string>
    <string name="delete_dialog">Fotoğraf Silinsin mi?</string>
    <string name="delete_title">Onayla</string>
    <string name="timer">00:30</string>
    <string name="blink_description">Gözünüzü kırpın!</string>
    <string name="keep_card_description">Kartı tutmaya devam edin!</string>

</resources>

这是我在 textview 中使用名为“keep_card_description”的字符串的地方:

<TextView
            android:id="@+id/camera_mrz_textView_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:fontFamily="sans-serif"
            android:text="@string/keep_card_description"
            android:textColor="#FFFFFF"
            android:textSize="13sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

这是我的多语言支持的结构。当我将语言英语更改为土耳其语时,字符串正在改变,除了一个。为什么只有一个字符串不改变?

【问题讨论】:

  • 嗨,你能在 values 和 values-tr 文件夹中分享你的字符串内容吗?
  • 我已按照您的建议进行了编辑
  • 不变的字符串在哪里?
  • 最后一个字符串名称="keep_card_description"
  • 你能分享你使用那个字符串的布局文件吗?

标签: android string textview multilingual


【解决方案1】:

正如您所说,更改语言适用于除一个字符串之外的所有字符串,因此我假设您用于更改语言的代码运行良好,并且您也可以很好地设置本地代码。 但是您没有解释您是在 XML 文件中使用字符串还是以编程方式设置它。

但我会告诉你改变语言的一件事,一旦创建应用程序上下文就不会重新创建,因此应用程序上下文将使用应用程序启动时设置的语言。

因此,如果您以编程方式设置字符串,请确保您使用的是活动上下文而不是应用程序上下文,并确保在更改语言后重新创建活动,因为您可能正在从设置活动更改语言,但您单击后退按钮并发现语言没有改变,因为上下文没有改变,所以你需要重新创建活动,在这种情况下,我建议你完成亲和力并首先开始或启动活动,以便确保所有活动都将创建新语言

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多