【问题标题】:Reference one string from another string in Localizable.strings从 Localizable.strings 中的另一个字符串引用一个字符串
【发布时间】:2016-04-14 18:20:15
【问题描述】:

我想从我的 Localizable.strings 文件中的另一个字符串中引用一个字符串,就像我们在下面的 android 的 strings.xml 文件中所做的那样

<string name="app_name">My App</string>   
<string name="activity_title">@string/app_name</string>

任何帮助将不胜感激。我尝试查找文档和 stackoverflow,但无法从中获取任何信息。

【问题讨论】:

  • @LuciusHipan 这个问题是针对安卓的。我的适用于 iOS。
  • 对不起,我的错
  • 我为这两个平台开发,我的大部分经验是在 Android 上,iOS 标题中的一些东西让我震惊,它们不能更好地工作,带来本地化就是其中之一。

标签: ios xcode


【解决方案1】:

iOS Localizable.strings 不如 Android 的 strings.xml 灵活。您不能从 plist 中执行此操作,只能从代码中执行此操作。

【讨论】:

    【解决方案2】:

    你可以像这样创建一个辅助类:

    Lang.h 文件

    #import <Foundation/Foundation.h>
    
    @interface Lang : NSObject
    +(NSString *)getString : (NSString *)key;
    @end
    

    Lang.m 文件

    #import "Lang.h"
    
    @implementation Lang
    
    +(NSString *)getString : (NSString *)key
    {
        @try {
            NSString *path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
    
            NSBundle* languageBundle = [NSBundle bundleWithPath:path];
            //find and return the desired string
            NSString* str = [languageBundle localizedStringForKey:key value:@"" table:nil];
            return str;
        }
        @catch (NSException *exception) {
            return @"";
        }
    }
    
    @end
    

    创建一个 .string 文件并将您的键值作为附件添加到该文件中:

    现在您可以像这样获取密钥的值:

    NSString *value = [Lang getString:@"YOUR_KEY"];
    

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多