我有一个需要国际化的故事板,我想确定基础国际化是否有用.
我计划只向翻译人员发送字符串文件,基础国际化允许使用字符串文件对故事板中的文本进行本地化,而不是为每种语言设置故事板副本.我看到的缺点是生成的字符串键值对看起来像这样:
"CT6-M1-BFU.title"="银行";
其中CT6-M1-BFU称为对象ID.现在,如果我将这些文件发送给翻译器,则没有足够的上下文来翻译字符串.例如,"银行"一词可能意味着金融机构或河岸,具体取决于具体情况.在另一种语言中,这两个词可能不是同音异义词,不同的词将用于这两个含义.没有上下文信息,就无法翻译.
问题是字符串键值不提供有关此字符串出现位置的信息,除非您有权访问故事板并知道如何在其中进行搜索.
有没有办法定义自定义字符串键或我最终必须从代码手动设置字符串?
我们需要在reactjs中实现本地化来定义字符串值.我该如何实现呢?
一个链接是https://www.npmjs.com/package/react-localization,但我没有得到添加它的步骤.
我试过以下步骤: -
我在ES6中添加我的组件: -
class Home扩展了React.Component {constructor(props){super(props);
}
render() {
return (
<Text>{strings.how}
</Text>
);
}
Run Code Online (Sandbox Code Playgroud)
}
我已将本地化代码添加为: -
从'react-localization'导入LocalizedStrings;
let strings = new LocalizedStrings({
en:{
how:"How do you want your egg today?",
boiledEgg:"Boiled egg",
softBoiledEgg:"Soft-boiled egg",
choice:"How to choose the egg"
},
it: {
how:"Come vuoi il tuo uovo oggi?",
boiledEgg:"Uovo sodo",
softBoiledEgg:"Uovo alla coque",
choice:"Come scegliere l'uovo"
}
});
Run Code Online (Sandbox Code Playgroud)
现在,如果您将看到上述内容: - {strings.how}我应该能够获得字符串值,因为它在本地化中定义但我无法做到.
我不知道我对此的态度是否从根本上是错误的,但我正在努力解决一个(看似微不足道的?!)本地化问题.
我想在导航栏中显示"系统"UITabBarItem(更多,收藏夹,精选等...)的标题.但是我从哪里得到字符串?MainWindow.nib的字符串文件不包含字符串(我没想到它),并且读取TabBarItem的标题返回nil,这就是难以理解的问题.
我被告知,没有办法实现它,我只需要为相关术语添加我自己的本地化字符串.但我根本就不(想)相信!! 在某些语言中,这可能很容易,但是,查看,"更多"已经在某些语言中提供了多个可能的单词.我也不喜欢简单地将这些单词用于翻译,因为它仍然取决于翻译者确切知道Apple使用的术语.我在这里错过了一些简单的东西吗?其他人做什么?
显然,在我的测试设备上设置系统语言,只是想看看Tab项目有哪些标题是另一种"明显"的可能性.但是我确实遇到过像这样的半烘焙解决方法的问题.这对大多数语言都有效,但对于俄语或日语,我真的很开心.
我确信必须有一种更可靠的方法来做到这一点.当然,SDK中必须有一个.strings文件,它定义了这些字符串?
提前谢谢...... Rich
我尝试添加一个Localizable.strings文件并添加一些字符串进行测试,一切正常.
但是,当我尝试添加本地化时,事情开始变得怪异.我能够添加本地化(英语和俄语),我可以在finder中看到文件列在两个文件夹中; ru.lproj和en.lproj.
当我清理和构建时,我得到以下编译错误:
Copy .strings file Error
The file "Localizable.strings" couldn't be opened because there is no such file.
Run Code Online (Sandbox Code Playgroud) NSLocalizedString(key, comment: "")当当前语言缺少键时,我无法从 Localizable.strings 加载字符串。NSLocalizedString 返回一个原始键
例如,当英语本地化存在字符串,但俄语缺少字符串时:
"config.updating" = "Update in progress...";
Run Code Online (Sandbox Code Playgroud)
当 iOS 语言设置为俄语时调用 NSLocalizedString 返回“config.updating”
NSLocalizedString("config.updating", comment: "") // "config.updating"
Run Code Online (Sandbox Code Playgroud)
NSLocalizedString 不应该访问 NSUserDefaults 中的“AppleLanguages”键来确定用户的设置并选择其他字符串吗?
我有一个应用程序,旨在通过Localizable.strings文件本地化为5种语言.当我查看项目>信息:本地化信息时,我看到一些语言(英语,法语,德语)和非预期语言(日语)的重复.

XCode中的我的资源也出现了.但是如果我查看Finder中的Resources目录,它们就像我期望的那样出现.

我试过了:
我很感激任何建议和解释.我在小牛队上使用XCode 6.1.1.谢谢.
我使用资源本地化Silverlight应用程序时遇到问题.我想让我的多语言机制成为跨平台,这就是为什么我将所有可本地化的资源放在Portable Class Library类型的项目中.在这个项目中,我创建了两个资源文件Localization.resx和Localization.en.resx,并在两个文件中将public和"access modifier"设置为public.然后我创建了名为"LocalizationProxy"的代理类,它是一个启用绑定的代理类.
public class LocalizationProxy : INotifyPropertyChanged
{
public Localization LocalizationManager { get; private set; }
public LocalizationProxy()
{
LocalizationManager = new Localization();
}
public void ResetResources()
{
OnPropertyChanged(() => LocalizationManager);
}
#region INotifyPropertyChanged region
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged<T>(Expression<Func<T>> selector)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(GetPropertyNameFromExpression(selector)));
}
}
public static string GetPropertyNameFromExpression<T>(Expression<Func<T>> property)
{
var lambda = (LambdaExpression)property;
MemberExpression memberExpression;
if (lambda.Body is UnaryExpression)
{
var unaryExpression = (UnaryExpression)lambda.Body;
memberExpression = (MemberExpression)unaryExpression.Operand; …Run Code Online (Sandbox Code Playgroud) localization silverlight-4.0 windows-phone-7 localizable.strings
我想以编程方式获取Android OS的所有字符串(包括所有字符串),包括那些被认为是私有的.
例如,我想获得packageManager应用程序的那些,如此处所示.
使用android.R.string只返回一小部分字符串.
我找到了这个链接,它显示了下一个代码,但我不确定要在参数中添加什么:
private String GetAttributeStringValue(Context context, AttributeSet attrs, String namespace, String name, String defaultValue)
{
//Get a reference to the Resources
Resources res = context.getResources();
//Obtain a String from the attribute
String stringValue = attrs.getAttributeValue(namespace, name);
//If the String is null
if(stringValue == null)
{
//set the return String to the default value, passed as a parameter
stringValue = defaultValue;
}
//The String isn't null, so check if it starts …Run Code Online (Sandbox Code Playgroud) 我对.stringsdict 文档感到有点困惑(滚动到"本地化属性列表文件").
给定了大量文件,我想显示保存文件或相应保存保存文件.我认为以下内容可行,但事实并非如此.
在代码中:
NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"%Save Files", @""), (long)files.count];
Run Code Online (Sandbox Code Playgroud)
在Localizable.stringsdict:
<key>Save Files</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Save %#@files@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>File</string>
<key>other</key>
<string>Files</string>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
始终显示保存文件,无论计数.
我究竟做错了什么?
我有一个包含多个目标的项目,它们代表相同的应用程序,只是具有不同的样式和翻译.
由于几乎整个项目对于每个目标看起来都是一样的,我需要在Localizable.strings文件中只有几个字符串,我需要不同.而且我不想将整个巨大的Localizable.strings文件复制到每个项目,因为它几乎没有不同的行.
由于项目中包含第三方库/ SDK,因此我只需要1个字符串文件.所以我不能使用tableName的localizedString.
该问题是-我需要有一个灵活的可能性,以覆盖从只有几行Localizable.strings对单独每一个目标.而且我不喜欢将整个文件复制到每个目标的想法,因为它将导致将来烦人的流量,如果我将有10个目标并且我需要为所有目标添加1个字符串.
该目标是有1个巨大Localizable.strings与包括所有字符串,这将是通用于所有的目标文件,并为每个目标的字符串应该告诉不同的小配置.所以目标的文件应该合并并覆盖常见的文件.
AFAIK它本身不受Xcode的支持,所以我可能正在寻找一个可以使它工作的脚本.
因此,脚本应该查看common和target的Localizable文件,合并它们,如果在两者中都定义了一些键,那么它应该使用target的文件中的一个.
任何人都可以帮我这样的脚本吗?
PS存在类似的问题.xcassets,并且CocoaPods通过将多个资产合并为1来解决它,并且它按预期工作 - 如果某些目标的资产包含已包含在公共资产中的同名图像,那么目标中的一个将取代它.
PS2.Android开发人员本身也支持类似的功能 - 每个图像,每个翻译都可以被"孩子"的瑕疵或者其他任何名称所覆盖:)