zoukankan      html  css  js  c++  java
  • Android-xliff

    先看以下这个案例,然后在分析:

    string.xml 使用xliff,需要导入命名空间 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"

    <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    
        <string name="app_name">UI_All</string>
    
        <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 以下是浮点型系列 -/>
        <!- 显示浮点类型 %n$mf m=1.2小数点后面有两位 -->
        <string name="cost_money" msgid="7137320847812992243">花费<xliff:g id="number">%1$1.2f</xliff:g></string>
    
        <!-- 显示浮点类型 %n$mf m=1.3小数点后面有三位-->
        <string name="cost_money_2">您消费了<xliff:g id="number2">%1$1.3f</xliff:g></string>
    
        <!-- 显示浮点类型 %n$mf m=1.9小数点后面有九位-->
        <string name="cost_money_3">您支付了<xliff:g id="number3">%1$1.9f</xliff:g>元钱</string>
    
        <!-- 显示浮点类型 %n$mf m=9.5小数点后面有五位    9.5的9理解位空格 -->
        <string name="cost_money_4">您扣除了<xliff:g id="number4">%1$9.5f</xliff:g>元钱</string>
    
    
        <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 以下是整型系列 -->
        <string name="count">这个办公室有<xliff:g id="count">%1$d</xliff:g>个工程师</string>
        <string name="count2">这个办公室有<xliff:g id="count2">%1$9d</xliff:g>个工程师</string>
    
    
        <!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 以下是字符串型系列 -->
        <string name="string">请求网络读取交易信息异常,详情是<xliff:g id="string">%1$s</xliff:g>行号890行</string>
        <string name="string2">此书名是<xliff:g id="string2">%1$9s</xliff:g>设计模式书籍</string>
        
        
        <!-- 多个xliff 由于多个xliff 和 显示类型无关,以下就随意以浮点型 示例 -->
        <string name="total_points">	第一名<xliff:g id="t1">%1$1.2f</xliff:g>分
    	第二名<xliff:g id="t2">%2$1.2f</xliff:g></string>
        <string name="welcome">
                欢迎 <xliff:g id="name">%1$s</xliff:g>, 排名 <xliff:g id="num">%2$d</xliff:g>
        </string>
    
    </resources>

    activity_stirng.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="20dp">
    
        <!-- 以下是整数系列>>>>>>>>>>>>>>>>>> -->
        <!-- 浮点型,小数点后面三位 -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cost_money" />
    
        <TextView
            android:id="@+id/tv_info1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="浮点型,小数点后面两位"
            />
    
        <TextView
            android:id="@+id/tv_info2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="浮点型,小数点后面三位"
            />
    
        <TextView
            android:id="@+id/tv_info3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="浮点型,小数点后面九位"
            />
    
        <TextView
            android:id="@+id/tv_info4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="浮点型,小数点后面五位,有空格 m=9.5 9代表空格"
            />
    
    
        <!-- 以下是整数系列>>>>>>>>>>>>>>>>>> -->
        <TextView
            android:id="@+id/tv_info5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="整数"
            android:layout_marginTop="40dp"
            />
    
        <TextView
            android:id="@+id/tv_info6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="整数有空格"
            android:layout_marginTop="20dp"
            />
    
    
        <!-- 以下是字符串系列>>>>>>>>>>>>>>>>>> -->
        <TextView
            android:id="@+id/tv_info7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="字符串"
            />
    
        <TextView
            android:id="@+id/tv_info8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="字符串 有空格"
            />
        
    
        <!-- 以下是多个xliff -->
        <TextView
            android:id="@+id/tv_info9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:text="以下是多个xliff"
            />
        <TextView
            android:id="@+id/tv_info10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="以下是多个xliff 欢迎"
            />
    
    </LinearLayout>

    Activity

    package liudeli.ui.all;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class StringActivity extends Activity {
    
        private TextView tv_info1, tv_info2, tv_info3, tv_info4,
                tv_info5, tv_info6, tv_info7, tv_info8, tv_info9,
                tv_info10;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_string);
    
            tv_info1 = findViewById(R.id.tv_info1);
            tv_info2 = findViewById(R.id.tv_info2);
            tv_info3 = findViewById(R.id.tv_info3);
            tv_info4 = findViewById(R.id.tv_info4);
            tv_info5 = findViewById(R.id.tv_info5);
            tv_info6 = findViewById(R.id.tv_info6);
            tv_info7 = findViewById(R.id.tv_info7);
            tv_info8 = findViewById(R.id.tv_info8);
            tv_info9 = findViewById(R.id.tv_info9);
            tv_info10 = findViewById(R.id.tv_info10);
    
            initStringData();
        }
    
        @SuppressLint("StringFormatMatches")
        protected void initStringData() {
    
            String cost1 = getString(R.string.cost_money, 5.5);
            tv_info1.setText(cost1);
    
            String cost2 = getString(R.string.cost_money_2, 22.99);
            tv_info2.setText(cost2);
    
            String cost3 = getString(R.string.cost_money_3, 88.77);
            tv_info3.setText(cost3);
    
            String cost4 = getString(R.string.cost_money_4, 88.77);
            tv_info4.setText(cost4);
    
            String cost5 = getString(R.string.count, 200);
            tv_info5.setText(cost5);
    
            String cost6 = getString(R.string.count2, 600);
            tv_info6.setText(cost6);
    
            String cost7 = getString(R.string.string, "严重的内存溢出(原因-图片申请控件过大");
            tv_info7.setText(cost7);
    
            String cost8 = getString(R.string.string2, "大话");
            tv_info8.setText(cost8);
    
            String cost9 = getString(R.string.total_points, 539.81, 695.99);
            tv_info9.setText(cost9);
    
            String s = getString(R.string.welcome, "abc", 123);
            tv_info10.setText(s);
    
        }
    }

    效果:


    分析:

    %n$md:输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 

    以下代码会报错❌,因为整数这种方式,m不能等于 9.9 不能是浮点型,可以是9

    <string name="count2">这个办公室有<xliff:g id="count2">%1$9.9d</xliff:g>个工程师</string>

    以下代码是正确的✅

    <string name="count2">这个办公室有<xliff:g id="count2">%1$9d</xliff:g>个工程师</string>

    %n$mf:输出的是浮点数,n代表是第几个参数,设置m的值可以在输出之前放置空格,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00

    以下代码是正确的✅

    <string name="cost_money_4">您扣除了<xliff:g id="number4">%1$9.5f</xliff:g>元钱</string>

    以下代码是错误的❌,设置后,无空格效果,m必须是浮点型,整型无效果

    <string name="cost_money_4">您扣除了<xliff:g id="number4">%1$9f</xliff:g>元钱</string>

    %n$ms:输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格

    以下代码是没有空格:%1$s

    <string name="string2">此书名是<xliff:g id="string2">%1$s</xliff:g>设计模式书籍</string>

    以下代码是有空格的:%1$9s

    <string name="string2">此书名是<xliff:g id="string2">%1$9s</xliff:g>设计模式书籍</string>

    以下代码是有空格的:%1$9.9s 效果和 %1$9s 是一样的空格量

    <string name="string2">此书名是<xliff:g id="string2">%1$9.9s</xliff:g>设计模式书籍</string>
  • 相关阅读:
    x264参数
    用X264编码以后的H264数据
    (转)YUV420存储格式
    YUV数据YUY2到I420
    udp编程中,一次能发送多少个bytes为好?
    (转)c++多态实现的机制
    linux下ping加时间戳实时输出到文件 放后台运行
    如何向AcmeAir注入问题代码
    AcmeAir
    Jmeter压力测试
  • 原文地址:https://www.cnblogs.com/android-deli/p/10256491.html
Copyright © 2011-2022 走看看