我想我是从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"
/>
但是,我得到了以下结果:
你知道我怎么解决这个问题吗?为什么会这样?
我先谢谢你,祝你有个好日子!
1条答案
按热度按时间rlcwz9us1#
所以,我找到了解决办法,因为,我很蠢。
从这篇文章:
example
属性包含了一个翻译者的例子,这样 * 他就知道占位符代表的是整数、日期、名称、组织还是完全不同的东西 *,这可能会影响目标语言的语法。因此,我只需在
strings.xml
文件中添加以下两行:并在
activity_layout.xml
文件中使用@string/starting_default
值引用它们。