我需要在Android Studio(beta)0.84中查找并提取项目中的所有硬编码字符串.我需要像Find Bugs这样的静态分析工具一次性为我做这件事,并允许我逐步完成每条消息并将字符串提取到资源文件.如果整个过程是自动化的,那就更好了.
在Android Studio(测试版)0.84中,文件/设置/ FindBugs-IDEA在报告选项卡下显示I18N作为选项.但我无法弄清楚如何让它发挥作用.
谢谢你的任何建议.
因此,无论设备/应用程序的当前语言环境设置如何,我都希望在多个语言环境中获取String的值.我该怎么办?
基本上我需要的是一个功能getString(int id, String locale)而不是getString(int id)
我怎么能这样做?
谢谢
我有一个多语言应用程序.我想让用户能够控制使用哪种语言.这意味着,即使他有英语语言环境,如果他愿意,也可以使用不同的语言.如何更改区域设置语言?(每个应用程序)
您可能知道,您可以在Android设备的设置中设置日期格式.
在代码中,我们如何确保使用该格式进行日期显示?
我们有一个android应用,它或多或少地只包含一个webview,显示一个webapp。在某个时候,我们想向用户显示一些时间戳,并使用以下代码
let dateString = new Date().toLocaleTimeString();
Run Code Online (Sandbox Code Playgroud)
问题是,即使我们将设备设置为使用24h时钟(并且设备确实遵守此设置,因为我们看到的是正确的时间),这也始终会产生12h的时间表示(例如,以AM / PM 3:15 PM代替15:15)。状态栏)。我们还将设备设置为使用德语,并删除了英语设置。也没有运气。使用设备的语言环境,因为我们的应用以正确的语言显示,但是时间字符串仍然错误。
window.navigator.language -> "de-AT"
new Date().toLocaleTimeString(); -> "6:10:13 PM"
new Date().toLocaleTimeString(window.navigator.language); -> "18:10:32"
Run Code Online (Sandbox Code Playgroud)
乍一看,最后一行似乎是一种可能的解决方法,但是如果语言是“ en-US”,则它将始终返回12h格式,无论os是否配置为使用24h时钟。
我知道这个问题,似乎与这个问题有某种联系,但是答案对我们不起作用。
使用我发现的各种虚拟设备,它仍然可以在chrome 58(在API 26上)上正常工作,但在chrome 61(在API 27上)上不能再使用。目前在chrome 70 beta上进行测试,问题仍然存在。
还需要注意的是,它在chrome本身中可以正常工作(即,如果我在测试网站中显示时间戳,则使用系统设置),但仅在webview中失败。
我们当前的解决方法是通过本机应用程序生成时间戳,但这似乎很笨拙。
更新
我知道我可以在网络应用程序方面做一些事情,例如覆盖toLocaleTimeString(实际上,我已经从本地应用程序中获取了正确的格式)。
我的问题更多是关于:本机中是否存在任何已知的已更改行为(可能是更改此操作的设置),WebView从而导致发生此问题,因为在Chrome <= 58的设备上,此方法的工作原理/魅力很大。
同时,我提出了铬的问题,他们能够复制它。也许这将在下一版本中得到解决...
更新2
该问题已经在Google方面解决,并且可能会在以后的更新中推出。在此期间,我将继续使用我的当前替代,将toLocaleTimeString()其调用回本机应用程序...
我刚刚将Skyhook Wireless技术集成到我的Android应用程序中.这是本地化框架,通过查找wifi热点提供更好的本地化.因此,位置更好,至少在室内可以找到热点.在缺点方面,该库的大小约为300kb.
现在在Cupcake中,当我查看"安全和位置"设置时,有一个名为"使用无线网络"的选项.这似乎与Skyhooks技术完全相同.但是,我无法找到任何关于这种本地化的有用信息,以及放弃300 kb库的天气.Skyhook已经融入了Cupcake吗?
我试图阻止我的应用程序自动翻译为其他语言(例如我的例子中的保加利亚语)。我希望所有的字符串都是英文的。我尝试将时区设置为“欧洲\伦敦”(因为我在英国),但这不太有效。有没有办法确保当有人在英国以外的国家/地区安装我的应用程序时,我的应用程序的设置(所有设置)不会被翻译?
我在我的应用程序中使用日期,并且我正在使用SimpleDateFormatter. 我认为这导致了翻译某些字符串的问题。所以我所做的就是在使用其中的字符串之前将时区设置为它:
public static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
String time = sdf.format(new Date());
mPurchasedDate.setText(day + " " + numDay + " " + mont + " at " + time);
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
PS:我没有在我的应用程序中添加任何本地化。我只有一个strings.xml文件夹,里面的字符串都是英文的。