Android(Java)中的国际化,在布局(XML)中使用xliff:g的默认值

wljmcqd8  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(132)

我想我是从Android的国际化开始的,使用的是i18 n(在Android Studio中是默认的)。但是,我有一个主要的问题。我的应用程序需要能够在字符串中注入变量,所以我小心地使用了我在Android官方文档中看到的,我们可以使用标签<xliff:g>来实现这一点。当我们在Java中使用此String时,example属性工作得非常好,但当我们在XML活动布局中使用这个相同的变量时,效率就完全丧失了。
例如,此strings.xml文件用于转换:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="starting">Start: <xliff:g id="unknown_position" example="Unknown position">%1$s</xliff:g>.</string>
    <string name="end">Arrival: <xliff:g id="unknown_position" example="Unknown position">%1$s</xliff:g>.</string>
    <string name="beginning_default">• Beginning: <xliff:g id="unknown_start_date" example="21 august 2022 at 14h21">%1$s</xliff:g></string>
    <string name="ending_default">• End: <xliff:g id="unknown_end_date" example="22 august 2022 at 14h20">%1$s</xliff:g></string>
</resources>

我在activity_layout.xml文件中使用这些变量:

<TextView
            android:id="@+id/startPositionText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:text="@string/starting"
            android:textColor="@color/white"
            android:textSize="20sp"
            />

        <TextView
            android:id="@+id/endPositionText"
            android:layout_below="@id/startPositionText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:text="@string/end"
            android:textColor="@color/white"
            android:textSize="20sp"
            />

        <TextView
            android:id="@+id/startText"
            android:layout_below="@+id/endPositionText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/beginning_default"
            android:textColor="@color/white"
            android:textSize="17sp"
            />

        <TextView
            android:id="@+id/endText"
            android:layout_below="@id/startText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/ending_default"
            android:textColor="@color/white"
            android:textSize="17sp"
            />

但是,我得到了以下结果:

你知道我怎么解决这个问题吗?为什么会这样?
我先谢谢你,祝你有个好日子!

rlcwz9us

rlcwz9us1#

所以,我找到了解决办法,因为,我很蠢。
从这篇文章:
example属性包含了一个翻译者的例子,这样 * 他就知道占位符代表的是整数、日期、名称、组织还是完全不同的东西 *,这可能会影响目标语言的语法。
因此,我只需在strings.xml文件中添加以下两行:

<string name="starting_default">Start: Unknown position.</string>
<string name="end_default">Arrival: Unknown position.</string>

并在activity_layout.xml文件中使用@string/starting_default值引用它们。

相关问题