[vlc-commits] macosx: Force right to left interface if RTL language was selected
David Fuhrmann
git at videolan.org
Sun Jul 30 17:59:41 CEST 2017
vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Sun Jul 30 10:14:40 2017 +0200| [2b5f3a4322d349f29215bc6180073ad2f436e8b7] | committer: David Fuhrmann
macosx: Force right to left interface if RTL language was selected
Enable RTL interface if RTL language was explicitly selected in
preferences.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2b5f3a4322d349f29215bc6180073ad2f436e8b7
---
modules/gui/macosx/VLCSimplePrefsController.m | 208 ++++++++++----------------
1 file changed, 78 insertions(+), 130 deletions(-)
diff --git a/modules/gui/macosx/VLCSimplePrefsController.m b/modules/gui/macosx/VLCSimplePrefsController.m
index caba91e393..310e039895 100644
--- a/modules/gui/macosx/VLCSimplePrefsController.m
+++ b/modules/gui/macosx/VLCSimplePrefsController.m
@@ -44,133 +44,73 @@
#import <Sparkle/Sparkle.h> //for o_intf_last_updateLabel
#endif
-static const char *const ppsz_language[] =
-{
- "auto",
- "en",
- "ar",
- "bn",
- "pt_BR",
- "en_GB",
- "el",
- "bg",
- "ca",
- "zh_TW",
- "cs",
- "cy",
- "da",
- "nl",
- "fi",
- "et",
- "eu",
- "fr",
- "ga",
- "gd",
- "gl",
- "ka",
- "de",
- "he",
- "hr",
- "hu",
- "hy",
- "is",
- "id",
- "it",
- "ja",
- "ko",
- "lt",
- "mn",
- "ms",
- "nb",
- "nn",
- "kk",
- "km",
- "ne",
- "oc",
- "fa",
- "pl",
- "pt_PT",
- "pa",
- "ro",
- "ru",
- "zh_CN",
- "si",
- "sr",
- "sk",
- "sl",
- "ckb",
- "es",
- "sv",
- "te",
- "tr",
- "uk",
- "vi",
- "wa",
- NULL,
-};
-static const char *const ppsz_language_text[] =
-{
- N_("Auto"),
- "American English",
- "عربي",
- "বাংলা",
- "Português Brasileiro",
- "British English",
- "Νέα Ελληνικά",
- "български език",
- "Català",
- "正體中文",
- "Čeština",
- "Cymraeg",
- "Dansk",
- "Nederlands",
- "Suomi",
- "eesti keel",
- "Euskara",
- "Français",
- "Gaeilge",
- "Gàidhlig",
- "Galego",
- "ქართული",
- "Deutsch",
- "עברית",
- "hrvatski",
- "Magyar",
- "հայերեն",
- "íslenska",
- "Bahasa Indonesia",
- "Italiano",
- "日本語",
- "한국어",
- "lietuvių",
- "Монгол хэл",
- "Melayu",
- "Bokmål",
- "Nynorsk",
- "Қазақ тілі",
- "ភាសាខ្មែរ",
- "नेपाली",
- "Occitan",
- "فارسی",
- "Polski",
- "Português",
- "ਪੰਜਾਬੀ",
- "Română",
- "Русский",
- "简体中文",
- "සිංහල",
- "српски",
- "Slovensky",
- "slovenščina",
- "کوردیی سۆرانی",
- "Español",
- "Svenska",
- "తెలుగు",
- "Türkçe",
- "украї́нська мо́ва",
- "tiếng Việt",
- "Walon",
+static struct {
+ const char iso[6];
+ const char name[34];
+ BOOL isRightToLeft;
+
+} const language_map[] = {
+ { "auto", N_("Auto"), NO },
+ { "en", "American English", NO },
+ { "ar", "عربي", YES },
+ { "bn", "বাংলা", NO },
+ { "pt_BR", "Português Brasileiro", NO },
+ { "en_GB", "British English", NO },
+ { "el", "Νέα Ελληνικά", NO },
+ { "bg", "български език", NO },
+ { "ca", "Català", NO },
+ { "zh_TW", "正體中文", NO },
+ { "cs", "Čeština", NO },
+ { "cy", "Cymraeg", NO },
+ { "da", "Dansk", NO },
+ { "nl", "Nederlands", NO },
+ { "fi", "Suomi", NO },
+ { "et", "eesti keel", NO },
+ { "eu", "Euskara", NO },
+ { "fr", "Français", NO },
+ { "ga", "Gaeilge", NO },
+ { "gd", "Gàidhlig", NO },
+ { "gl", "Galego", NO },
+ { "ka", "ქართული", NO },
+ { "de", "Deutsch", NO },
+ { "he", "עברית", YES },
+ { "hr", "hrvatski", NO },
+ { "hu", "Magyar", NO },
+ { "hy", "հայերեն", NO },
+ { "is", "íslenska", NO },
+ { "id", "Bahasa Indonesia", NO },
+ { "it", "Italiano", NO },
+ { "ja", "日本語", NO },
+ { "ko", "한국어", NO },
+ { "lt", "lietuvių", NO },
+ { "mn", "Монгол хэл", NO },
+ { "ms", "Melayu", NO },
+ { "nb", "Bokmål", NO },
+ { "nn", "Nynorsk", NO },
+ { "kk", "Қазақ тілі", NO },
+ { "km", "ភាសាខ្មែរ", NO },
+ { "ne", "नेपाली", NO },
+ { "oc", "Occitan", NO },
+ { "fa", "فارسی", YES },
+ { "pl", "Polski", NO },
+ { "pt_PT", "Português", NO },
+ { "pa", "ਪੰਜਾਬੀ", NO },
+ { "ro", "Română", NO },
+ { "ru", "Русский", NO },
+ { "zh_CN", "简体中文", NO },
+ { "si", "සිංහල", NO },
+ { "sr", "српски", NO },
+ { "sk", "Slovensky", NO },
+ { "sl", "slovenščina", NO },
+ { "ckb", "کوردیی سۆرانی", YES },
+ { "es", "Español", NO },
+ { "sv", "Svenska", NO },
+ { "te", "తెలుగు", NO },
+ { "tr", "Türkçe", NO },
+ { "uk", "украї́нська мо́ва", NO },
+ { "vi", "tiếng Việt", NO },
+ { "wa", "Walon", NO }
};
static NSString* VLCSPrefsToolbarIdentifier = @"Our Simple Preferences Toolbar Identifier";
@@ -562,10 +502,10 @@ static inline const char * __config_GetLabel(vlc_object_t *p_this, const char *p
NSUInteger sel = 0;
const char *pref = NULL;
pref = [[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] UTF8String];
- for (int x = 0; ppsz_language[x] != NULL; x++) {
- [_intf_languagePopup addItemWithTitle:toNSStr(ppsz_language_text[x])];
+ for (int x = 0; x < ARRAY_SIZE(language_map); x++) {
+ [_intf_languagePopup addItemWithTitle:toNSStr(language_map[x].name)];
if (pref) {
- if (!strcmp(ppsz_language[x], pref))
+ if (!strcmp(language_map[x].iso, pref))
sel = x;
}
}
@@ -914,7 +854,15 @@ static inline void save_string_list(intf_thread_t * p_intf, id object, const cha
if (_intfSettingChanged) {
NSUInteger index = [_intf_languagePopup indexOfSelectedItem];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setObject:toNSStr(ppsz_language[index]) forKey:@"language"];
+ [defaults setObject:toNSStr(language_map[index].iso) forKey:@"language"];
+
+ if (index == 0) { // Automatic handling of right to left
+ [defaults removeObjectForKey:@"NSForceRightToLeftWritingDirection"];
+ [defaults removeObjectForKey:@"AppleTextDirection"];
+ } else {
+ [defaults setBool:language_map[index].isRightToLeft forKey:@"NSForceRightToLeftWritingDirection"];
+ [defaults setBool:language_map[index].isRightToLeft forKey:@"AppleTextDirection"];
+ }
[defaults synchronize];
config_PutInt(p_intf, "metadata-network-access", [_intf_artCheckbox state]);
More information about the vlc-commits
mailing list