سؤال

لديّ تطبيق شريط علامات تبويب يجب أن يعرض بلغات مختلفة اعتمادًا على تفضيل المستخدم ، لكن لا يمكنني العثور على الكثير من المعلومات حول كيفية تغيير أسماء علامات التبويب في وقت التشغيل. أحتاج إلى علامات التبويب لإظهار الأسماء الصحيحة عند بدء التشغيل ، وليس عند الوصول إلى علامات التبويب.

أفضل المعلومات التي يمكنني العثور عليها كانت تعمل

self.tabBarController.selectedIndex = 1;
tabBarController.selectedViewController.tabBarItem.title = @"Tab Name";

من مندوب التطبيق ، لكن هذا يجعل علامة التبويب نشطة ثم يقوم بتعيين الاسم.

ألا توجد طريقة أفضل لتعيين أسماء علامات التبويب في وقت التشغيل؟ من الناحية المثالية ، أود أن أضعها جميعًا دفعة واحدة.

هل كانت مفيدة؟

المحلول 2

لم ينجح الردود من أجلي ، لقد فعلت ذلك في النهاية على هذا النحو:

// Create temp strings to hold tab names
NSString *tab0Name;
NSString *tab1Name;
NSString *tab2Name;
NSString *tab3Name;
NSString *tab4Name;

// Set strings according to language
if ([UIAppDelegate.iStegAppLanguage isEqualToString:@"FR"])
{
    tab0Name = @"Accueil";
    tab1Name = @"Produits";
    tab2Name = @"Caisse";
    tab3Name = @"Branches";
    tab4Name = @"Plus";
}
else if ([UIAppDelegate.iStegAppLanguage isEqualToString:@"IT"])
{
    tab0Name = @"Home";
    tab1Name = @"Prodotti";
    tab2Name = @"Checkout";
    tab3Name = @"Filiali";
    tab4Name = @"More";
}
else if ([UIAppDelegate.iStegAppLanguage isEqualToString:@"EN"])
{
    tab0Name = @"Home";
    tab1Name = @"Products";
    tab2Name = @"Checkout";
    tab3Name = @"Branches";
    tab4Name = @"More";
}
else    // Default to german unless specifically set to another language
{
    tab0Name = @"Home";
    tab1Name = @"Produkte";
    tab2Name = @"Checkout";
    tab3Name = @"Filialen";
    tab4Name = @"Mehr";
}

// Set tab name
self.tabBarController.selectedIndex = 1;
tabBarController.selectedViewController.tabBarItem.title = tab1Name;
self.tabBarController.selectedIndex = 2;
tabBarController.selectedViewController.tabBarItem.title = tab2Name;
self.tabBarController.selectedIndex = 3;
tabBarController.selectedViewController.tabBarItem.title = tab3Name;
self.tabBarController.selectedIndex = 4;
tabBarController.selectedViewController.tabBarItem.title = tab4Name;
self.tabBarController.selectedIndex = 0;
tabBarController.selectedViewController.tabBarItem.title = tab0Name;    // Home last so it's shown first

نصائح أخرى

إذا كان لديك إشارة إلى Uitabbar ، يمكنك استخدام شيء مثل:

for (UITabBarItem *tabBarItem in tabBar)
{
  tabBarItem.title = NSLocalizedString(...);
}

أقترح عليك توطين ملف XIB الخاص بك:

  • انقر بزر الماوس الأيمن على ملف XIB الخاص بك
  • "يحصل على معلومات"
  • علامة التبويب "العامة" في الأعلى
  • زر "Make File قابل للترجمة" في الأسفل
  • العودة إلى علامة التبويب "العامة" في الأعلى
  • زر "إضافة توطين" في أسفل + أدخل اللغة التي تريدها (على سبيل المثال "en" ، "FR" ، "He" ، "RU" إلخ)

كرر الخطوة الأخيرة حتى تحصل على جميع اللغات المطلوبة.
أفضل استخدام "EN" بدلاً من "اللغة الإنجليزية" الافتراضية التي يتم إنشاؤها تلقائيًا - إذا كنت تفضل "en" أيضًا ، فقم بحذف "اللغة الإنجليزية" في النهاية ...

يمكنك الآن إدخال عناوين مختلفة إلى علامات التبويب لكل لغة ...

الطريقة التي قمت بها هي عن طريق تحديد منافذ في مندوب التطبيق:

IBOutlet UITabBarItem *tabBarItem1;
IBOutlet UITabBarItem *tabBarItem2;
IBOutlet UITabBarItem *tabBarItem3;
IBOutlet UITabBarItem *tabBarItem4;

وبعد ذلك ، بعد توصيل المنافذ في IB ، وضع هذا - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions :

[tabBarItem1 setTitle:NSLocalizedString(@"tab1", @"")];
[tabBarItem2 setTitle:NSLocalizedString(@"tab2", @"")];
[tabBarItem3 setTitle:NSLocalizedString(@"tab3", @"")];
[tabBarItem4 setTitle:NSLocalizedString(@"tab4", @"")];

إنه يعمل لكنني لست سعيدًا بذلك أيضًا - لسبب ما ، لا يمكنني الحصول على mainwindow.xib القابل للترجمة.

أنا استخدم:

NSArray *itemsTabBar = [[NSArray alloc] initWithArray:[self.tabBarController.tabBar items]];

    [[itemsTabBar objectAtIndex:0] setTitle:@"Contacts"];
    [[itemsTabBar objectAtIndex:1] setTitle:@"Settings"];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top