【问题标题】:android localization format string errorandroid本地化格式字符串错误
【发布时间】:2018-05-02 23:42:45
【问题描述】:

我一直在为我的 android 应用程序做一些本地化翻译,但我遇到了这个我不知道如何修复的错误 所以java mainActivity文件方法看起来像这样

private String creatOrderSummary(String name, int price, boolean addWhippedCream, boolean addChocolate) {
    String priceMessage = getString(R.string.order_summary_name, name);
    priceMessage += "\nadd whipped cream? " + addWhippedCream;
    priceMessage += "\nadd chocolate? " + addChocolate;
    priceMessage += "\nQuantity : " + quantity;
    priceMessage += "\nTotal : $" + price;
    priceMessage += "\n" + getString(R.string.thank_you);
    return priceMessage;

}

字符串 xml 文件看起来像这样

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="app_name">Just Java</string>

    <string name="toppings">Toppings</string>
    <string name="thank_you">Thank you!</string>
    <string name="user_name">Name</string>
    <string name="whipped_cream">Whipped Cream</string>
    <string name="chocolate">Chocolate</string>
    <string name="quantity">Quantity</string>
    <string name="order">Order</string>
    <string name="order_summary_name">Name: <xliff:g id="name" example="Amy">%s</xliff:g></string>
</resources>

问题在于我得到的错误提示

格式字符串 'order_summary_name' 不是有效的格式字符串,因此它 不应传递给 String.format

【问题讨论】:

  • 您的代码是正确的。继续运行该项目。如果不行,请尝试清理并重建您的项目。这可能是因为 Gradle 构建尚未刷新
  • @FazanCheng 我的代码和他的一模一样,但这并没有解决问题

标签: java android localization


【解决方案1】:

试试 getRsources().getString(R.string.name);

【讨论】:

  • 我的代码和他的一模一样,但这并没有解决问题
【解决方案2】:

我“清理”了项目,然后“重建”,它成功了。

所以我所做的是: 在菜单栏(在 Android Studio 中)选择 Build-> Clean Project。 之后再次单击 Build -> Rebuild Project。 完成后,运行“app”(Windows 上的 Shift + F10)。

【讨论】:

  • 请避免“低质量”标志并解释“已清洁”在您的情况下的含义。我猜不是“清洁”汽车或水壶。 “重建”也是如此。 (延迟回答审查结束)。
  • 我的代码和你完全相同(Udacity 课程对吗?),但这并没有解决问题。因此,该名称未显示在订单摘要中
  • 好的找到了答案:本地化文件string.xml(fr)中缺少xliff:g它需要手动添加
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 2012-08-25
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多