我正在尝试为塞尔维亚拉丁语 (srpski) 和黑山语(西里尔语和拉丁语)翻译 strings.xml。我已将塞尔维亚西里尔字母 (српски) 作为 values-sr 包含在值文件夹中。它工作正常。但是对于塞尔维亚拉丁语和黑山语,我无法决定值文件夹的名称应该是什么。我在 SO 中浏览了很多帖子,比如
How to change locale to use Latin Serbian (instead of Cyrillic Serbian)
What should be the values folder name for Serbian (Latin,Serbia) (sr-rs-latn) language?
但他们并没有太大帮助。
我从https://github.com/championswimmer/android-locales了解到该值文件夹应该是:
塞尔维亚语(西里尔文)sr --> values-sr-r_#Cyrl
塞尔维亚语(西里尔文,黑山)sr ME --> values-sr-rME_#Cyrl
塞尔维亚语(西里尔文,塞尔维亚语)sr RS --> values-sr-rRS_#Cyrl
塞尔维亚语(拉丁语)sr --> values-sr-r_#Latn
塞尔维亚语(拉丁语、黑山语)sr ME --> values-sr-rME_#Latn
塞尔维亚语(拉丁语,塞尔维亚语)sr RS --> values-sr-rRS_#Latn
但是,如果我尝试在 Android Studio 中创建类似 values-sr-rRS_#Latn 的文件夹,它会抛出错误“无效目录”。然后我开始了一些分析。
在 Nexus 9 Marshmallow 中,使用 Locale.getAvailableLocales() 的可用语言环境列表列出了所有塞尔维亚语。所以他们得到了支持。
高级
sr__#Cyrl
sr_BA_#Cyrl
sr_ME_#Cyrl
sr_RS_#Cyrl
sr_XK_#Cyrl
sr__#Latn
sr_BA_#Latn
sr_ME_#Latn
sr_RS_#Latn
sr_XK_#Latn
在 Nexus 9 的“设置”屏幕中,我可以看到仅更改为塞尔维亚西里尔字母 (српски) 的选项,而在 Lenovo Yoga 选项卡中,我看到仅更改为塞尔维亚拉丁字母 (srpski) 的选项。当我调试这两个设备时,我发现它们的语言代码都是sr,区域代码是RS,脚本代码是空白的。那么如何在应用程序中同时包含值文件夹及其映射方式呢?
我是否应该为我需要的语言创建值文件夹(如 values-sr-ZZ 或其他内容)并在代码中检查脚本代码?
但如果是这样的话,我发现在 Google Play 游戏和设置应用程序的资源文件夹中,它们只有一个 values-sr 文件夹。那么他们如何处理 values-sr-r_#Latn 和 values-sr-rME_#Latn 以及 values-sr-rME_#Cyrl。
有人可以指导我吗?
最佳答案
我刚刚成功使用:
values-b+sr+Latn
另见 Android build error for values-b+sr+Latn如果您无法解决无效目录问题
关于strings.xml 的 Android 塞尔维亚拉丁语和黑山语值文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537081/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一
在Ruby1.9.3(可能还有更早的版本,不确定)中,我试图弄清楚为什么Ruby的String#split方法会给我某些结果。我得到的结果似乎与我的预期相反。这是一个例子:"abcabc".split("b")#=>["a","ca","c"]"abcabc".split("a")#=>["","bc","bc"]"abcabc".split("c")#=>["ab","ab"]在这里,第一个示例返回的正是我所期望的。但在第二个示例中,我很困惑为什么#split返回零长度字符串作为返回数组的第一个值。这是什么原因呢?这是我所期望的:"abcabc".split("a")#=>["bc"
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我想禁用HTTP参数的自动XML解析。但我发现命令仅适用于Rails2.x,它们都不适用于3.0:config.action_controller.param_parsers.deleteMime::XML(application.rb)ActionController::Base.param_parsers.deleteMime::XMLRails3.0中的等价物是什么? 最佳答案 根据CVE-2013-0156的最新安全公告你可以将它用于Rails3.0。3.1和3.2ActionDispatch::ParamsParser::
玩转ruby,我已经:#!/usr/bin/ruby-w#WorldweatheronlineAPIurlformat:http://api.worldweatheronline.com/free/v1/weather.ashx?q={location}&format=json&num_of_days=1&date=today&key={api_key}require'net/http'require'json'@api_key='xxx'@location='city'@url="http://api.worldweatheronline.com/free/v1/weather.
我正在遍历数组中的一组标签名称,我想使用构建器打印每个标签名称,而不是求助于“我认为:builder=Nokogiri::XML::Builder.newdo|xml|fortagintagsxml.tag!tag,somevalendend会这样做,但它只是创建名称为“tag”的标签,并将标签变量作为元素的文本值。有人可以帮忙吗?这个看起来应该比较简单,我刚刚在搜索引擎上找不到答案。我可能没有以正确的方式提问。 最佳答案 尝试以下操作。如果我没记错的话,我添加了一个根节点,因为Nokogiri需要一个。builder=Nokogi
这是一些奇怪的例子:#!/usr/bin/rubyrequire'rubygems'require'open-uri'require'nokogiri'print"withoutread:",Nokogiri(open('http://weblog.rubyonrails.org/')).class,"\n"print"withread:",Nokogiri(open('http://weblog.rubyonrails.org/').read).class,"\n"运行此返回:withoutread:Nokogiri::XML::Documentwithread:Nokogiri::
我有代码:classScenedefinitialize(number)@number=numberendattr_reader:numberendscenes=[Scene.new("one"),Scene.new("one"),Scene.new("two"),Scene.new("one")]groups=scenes.inject({})do|new_hash,scene|new_hash[scene.number]=[]ifnew_hash[scene.number].nil?new_hash[scene.number]当我启动它时出现错误:freq.rb:11:in`[]'
我的Ruby代码中有一个看起来有点像这样的结构Parameter=Struct.new(:name,:id,:default_value,:minimum,:maximum)稍后,我使用创建了这个结构的一个实例freq=Parameter.new('frequency',15,1000.0,20.0,20000.0)在某些时候,我需要这个结构的精确副本,所以我调用newFreq=freq.clone然后,我更改newFreq的名称newFreq.name.sub!('f','newF')奇迹般地,它也改变了freq.name!像newFreq.name='newFrequency'这样