Iterate trough yaml file in ruby and fetching the required data - ruby-on-rails

I have a yaml file with the following struture:
market:
US:
- prod:
- page1: sys-admin, client-admin, editor-admin
- page2: client-admin
- page3: editor-admin, sys-admin
- dev:
- page1: sys-admin, editor-admin
- page2: sys-admin, client-admin, editor-admin
- page3: sys-admin, client-admin, editor-admin
IN:
- prod:
- page1: sys-admin, client-admin
- page2: client-admin, editor-admin
- page3: editor-admin, sys-admin
- dev:
- page1: client-admin, editor-admin
- page2: sys-admin, client-admin, editor-admin
- page3: sys-admin, client-admin, editor-admin
Now I want a function which returns market name eg. IN and page eg. page1 based on the roles eg. client-admin. How should I proceed? I am trying but not able to conclude and come to a proper output.
Help me out, Guys !
Thanks in advance. :)

I would suggest re thinking the design of your YAML file to make this easier on yourself. Maybe something along the lines of
doc = <<Y
market:
US:
prod:
page1:
- sys-admin
- client-admin
- editor-admin
page2:
- client-admin
page3:
- editor-admin
- sys-admin
Y
Then finding the correct pages is easy:
locale = 'US'
environment = 'prod'
user_role = 'client-admin'
h = YAML.load(doc).to_h
h['market'][locale][environment].select do |page,roles|
roles.include?(user_role)
end
#=> {"page1"=>["sys-admin", "client-admin", "editor-admin"],
# "page2"=>["client-admin"]}
Right now your environments are an Array of Hash objects which seems unnecessary as they could just be a Hash and your roles are actually a String (e.g. "sys-admin, client-admin, editor-admin") which could be come more difficult to maintain in the future and makes parsing a bit more cumbersome.

Related

Neovim lua how to use mutable variables in keymappings

I'm using neovide (a graphical interface for nvim), so I lost ctrl+[-+] to change the font size. I'm trying to rewrite it in my lua config but I'm pretty new to lua so I'm struggling to implement the function. Here's my code :
vim.g.font_size = 11
vim.o.guifont='FantasqueSansMono Nerd Font Mono:h'..vim.g.font_size
vim.keymap.set('n', '<C-->',
':let g:font_size = (g:font_size - 1)<CR>:let &guifont = \'FantasqueSansMono Nerd Font Mono:h'..vim.g.font_size..'\'<CR>')
What I'm trying to do, is to have a variable font_size that I can increment or decrement, then use the new value to update the size of the font. The first two lines work perfectly, they always set the correct font size when launching a new instance of neovide. The keymap on the other hand will decrement / increment font_size like intended but the second command of the mapping will always use the value written at line 1.
For instance, if I start neovide and press ctrl+-, the status line will show :let &guifont = 'FantasqueSansMono Nerd Font Mono:h11', but if I enter the following command : echo g:font_size, I get 10. Is there a way to fix this problem ? (or a more elegant way to fix it haha)
This line:
':let g:font_size = (g:font_size - 1)<CR>:let &guifont = \'Consolas:h'..vim.g.font_size..'\'<CR>'
Is building a string that uses the current version of vim.g.font_size at the time the string is built. That ends up being this string:
':let g:font_size = (g:font_size - 1)<CR>:let &guifont = \'Consolas:h11\'<CR>'
So your mapping looks like this:
vim.keymap.set('n', '<C-->', ':let g:font_size = (g:font_size - 1)<CR>:let &guifont = \'Consolas:h11\'<CR>'
See what's happening now?
Side note, Lua supports several string delimeters ("x", 'x', or [[x]]), so you don't have to escape your internal strings if you use a different outer delimeter, like this:
":let g:font_size = (g:font_size - 1)<CR>:let &guifont = 'Consolas:h11'<CR>"
The binding yoiu really want is this:
vim.keymap.set('n', '<C-->', ":let g:font_size = (g:font_size - 1)<CR>:let &guifont = 'Consolas:h'.g:font_size<CR>"
But if you really want the binding to be Lua, you'd dot his:
vim.keymap.set('n', '<C-->', ":luado vim.g.font_size = vim.g.font_size - 1; vim.o.guifont='Consolas:h'..vim.g.font_size<CR>")

Docker Compose Syntax

so I have been using docker compose for a while, I have recently come across this new syntax and I have no idea what it means:
For example - the compose file is located here
http://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml
It has things such as
&airflow-common
<<: *airflow-common
Could somebody explain to me what that means ? It appears to be some defining config and referencing it.
This isn't Docker feature, this is YAML merge syntax to help you DRY. &airflow-common declares an anchor
for the contents after it, <<: *airflow-common merges contents below with the contents of the anchor. See the example:
---
- &CENTER { x: 1, y: 2 }
- &LEFT { x: 0, y: 2 }
- &BIG { r: 10 }
- &SMALL { r: 1 }
# All the following maps are equal:
- # Explicit keys
x: 1
y: 2
r: 10
label: center/big
- # Merge one map
<< : *CENTER
r: 10
label: center/big
- # Merge multiple maps
<< : [ *CENTER, *BIG ]
label: center/big
- # Override
<< : [ *BIG, *LEFT, *SMALL ]
x: 1
label: center/big

Need a formula that searches for a combination of values in a row and places the value in a cell depending on combination found

I want to search for a set of possible values in a column to the left of said cell (actually, its three columns to the left), compare the combination with a list of end-result values and place a correct end result value in a cell. The values are contained within a list of values, separated with a comma. looks like this:
Value1, Value2, Value3, Value4, ValueINeed1(out of possible 12) - ValueINeed1a(out of possible 3, but each possible value is unique to ValueINeed1), Value6, Value(n)
Right now, I'm using this formula
=IF(ISBLANK(H10) = TRUE;""; IFERROR(IF(ISNUMBER(SEARCH("ValueINeed1- SubValueINeed1a";H10; 1)); "Result1"; IF(ISNUMBER(SEARCH("ValueINeed1- SubValueINeed1b";H10; 1)); "Result2"; IF(ISNUMBER(SEARCH("ValueINeed1 - SubValueINeed1c";H10; 1)); "Result3"; IF(ISNUMBER(SEARCH("ValueINeed2 - ValueINeed2a";H10; 1)); "Result4"; IF(ISNUMBER(SEARCH("ValueINeed2 - ValueINeed2b";H10; 1)); "Result5"; IF(ISNUMBER(SEARCH("ValueINeed2 - ValueINeed2c";H10; 1)); "Result6"; IF(ISNUMBER(SEARCH("ValueINeed3 - ValueINeed3a";H10; 1)); "Result7"; IF(ISNUMBER(SEARCH("ValueINeed3 - ValueINeed3b";H10; 1)); "Result8"; IF(ISNUMBER(SEARCH("ValueINeed3 - ValueINeed3c";H10; 1)); "Result9"; IF(ISNUMBER(SEARCH("ValueINeed4 - ValueINeed4a";H10; 1)); "Result10"; IF(ISNUMBER(SEARCH("ValueINeed4 - ValueINeed4b";H10; 1)); "Result11"; IF(ISNUMBER(SEARCH("ValueINeed4 - ValueINeed4c";H10; 1)); "Result12"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5a";H10; 1)); "Result13"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5b";H10; 1)); "Result14"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5c";H10; 1)); "Result15"; IF(ISNUMBER(SEARCH("ValueINeed5 - ValueINeed5d";H10; 1)); "Result16"; IF(ISNUMBER(SEARCH("ValueINeed6 - ValueINeed6a";H10; 1)); "Result17"; IF(ISNUMBER(SEARCH("ValueINeed6 - ValueINeed6b";H10; 1)); "Result18"; IF(ISNUMBER(SEARCH("ValueINeed6 - ValueINeed6c";H10; 1)); "Result19"; IF(ISNUMBER(SEARCH("ValueINeed7 - ValueINeed7a";H10; 1)); "Result20"; IF(ISNUMBER(SEARCH("ValueINeed7 - ValueINeed7b";H10; 1)); "Result21"; IF(ISNUMBER(SEARCH("ValueINeed7 - ValueINeed7c";H10; 1)); "Result22"; IF(ISNUMBER(SEARCH("ValueINeed8 - ValueINeed8a";H10; 1)); "Result23"; IF(ISNUMBER(SEARCH("ValueINeed8 - ValueINeed8b";H10; 1)); "Result24"; IF(ISNUMBER(SEARCH("ValueINeed8 - ValueINeed8c";H10; 1)); "Result25"; IF(ISNUMBER(SEARCH("ValueINeed9 - ValueINeed9a";H10; 1)); "Result26"; IF(ISNUMBER(SEARCH("ValueINeed9 - ValueINeed9b";H10; 1)); "Result27"; IF(ISNUMBER(SEARCH("ValueINeed9 - ValueINeed9c";H10; 1)); "Result28"; IF(ISNUMBER(SEARCH("ValueINeed10 - ValueINeed10a";H10; 1)); "Result29";IF(ISNUMBER(SEARCH("ValueINeed10 - ValueINeed10b";H10; 1)); "Result30"; IF(ISNUMBER(SEARCH("ValueINeed11 - ValueINeed11a";H10; 1)); "Result31"; IF(ISNUMBER(SEARCH("ValueINeed11 - ValueINeed11b";H10; 1)); "Result32"; IF(ISNUMBER(SEARCH("ValueINeed11 - ValueINeed11c";H10; 1)); "Result33"; IF(ISNUMBER(SEARCH("ValueINeed12 - ValueINeed12a";H10; 1)); "Result34"; IF(ISNUMBER(SEARCH("ValueINeed12 - ValueINeed12b";H10; 1)); "Result35"; IF(ISNUMBER(SEARCH("ValueINeed12 - ValueINeed12c";H10; 1)); "Result36"; ""))))))))))))))))))))))))))))))))))))))
ValueINeed5 has four corresponding "Subvalues", and ValueINeed10 - only two.
As you can see, this looks nasty, and I suspect it will murder my spreadsheet's performance as soon as the sheet grows several thousand rows long. Is there any solution I can use to replace this?
EDIT:
Excuse me for my late reply.
Here's the sheet:
https://docs.google.com/spreadsheets/d/1dpPY2h7jEQNdGj5USrdSu1Rhc_Dz1Ll0MyzvQwiVwM8/edit#gid=376650348
I've replaced the info I'm working with with for clarity's sake, and put a comment in each column's heading. Please feel free to comment the table.

code file size increase error in blackberry

I am saving 2500 name in array .But I am getting error code increase the size .So it is not run ..Can you please tell me how to solve that error ? I only show few element due to restriction .
package mypackage;
public class GlobalList {
public static String[] stationList={
"Abbey Wood - (ABW)",
"Aber - (ABE)",
"Abercynon - (ACY)",
"Aberdare - (ABA)",
"Barry Island - (BYI)",
"Barry Links - (BYL)",
"Barton-on-Humber - (BAU)",
"Basildon - (BSO)",
"Basingstoke - (BSK)",
"Glasgow Central - (GLC)",
"Glasgow Queen Street - (GLQ)",
"Glasshoughton - (GLH)",
"Glazebrook - (GLZ)",
"Gleneagles - (GLE)",
"Glenfinnan - (GLF)",
"Glengarnock - (GLG)",
"Glenrothes with Thornton - (GLT)",
"Glossop - (GLO)",
"Gloucester - (GCR)",
"Glynde - (GLY)",
"Gobowen - (GOB)",
"Godalming - (GOD)",
"Godley - (GDL)",
"Godstone - (GDN)",
"Goldthorpe - (GOE)",
"Kirkcaldy - (KDY)",
"Kirkconnel - (KRK)",
"Kirkdale - (KKD)",
"Kirkham & Wesham - (KKM)",
"Kirkhill - (KKH)",
"Kirknewton - (KKN)",
"Kirkwood - (KWD)",
"Kirton Lindsey - (KTL)",
"Kiveton Bridge - (KIV)",
"Kiveton Park - (KVP)",
"Knaresborough - (KNA)",
"Knebworth - (KBW)",
"Knighton - (KNI)",
"Knockholt - (KCK)",
"Knottingley - (KNO)",
"Knucklas - (KNU)",
"Knutsford - (KNF)",
"Kyle of Lochalsh - (KYL)",
"Ladybank - (LDY)",
"Ladywell - (LAD)",
"Laindon - (LAI)",
"Lairg - (LRG)",
"Lake - (LKE)",
"Lakenheath - (LAK)",
"Lamphey - (LAM)",
"Lanark - (LNK)",
"Lancaster - (LAN)",
"Lancing - (LAC)",
"Landywood - (LAW)",
"Langbank - (LGB)",
"Langho - (LHO)",
"Langley (Berks) - (LNY)",
"Langley Green - (LGG)",
"Langley Mill - (LGM)",
"Langside - (LGS)",
"Langwathby - (LGW)",
"Langwith-Whaley Thorns - (LAG)",
"Lapford - (LAP)",
"Lapworth - (LPW)",
"Larbert - (LBT)",
"Largs - (LAR)",
"Larkhall - (LRH)",
"Laurencekirk - (LAU)",
"Lawrence Hill - (LWH)",
"Layton (Lancs) - (LAY)",
"Lazonby & Kirkoswald - (LZB)",
"Lea Green - (LEG)",
"Lea Hall - (LEH)",
"Leagrave - (LEA)",
"Lealholm - (LHM)",
"Leamington Spa - (LMS)",
"Leasowe - (LSW)",
"Leatherhead - (LHD)",
"Ledbury - (LED)",
"Lee (London) - (LEE)",
"Leeds - (LDS)",
"Leicester - (LEI)",
"Leigh (Kent) - (LIH)",
"Leigh-on-Sea - (LES)",
"Leighton Buzzard - (LBZ)",
"Lelant - (LEL)",
"Lelant Saltings - (LTS)",
"Lenham - (LEN)",
"Lenzie - (LNZ)",
"Leominster - (LEO)",
"Letchworth Garden City - (LET)",
"Leuchars (for St. Andrews) - (LEU)",
"Levenshulme - (LVM)",
"Lewes - (LWS)",
"Lewisham - (LEW)",
"Leyland - (LEY)",
"Leyton Midland Road - (LEM)",
"Leytonstone High Road - (LER)",
"Lichfield City - (LIC)",
"Lichfield Trent Valley - (LTV)",
"Lidlington - (LID)",
"Limehouse - (LHS)",
"Lincoln Central - (LCN)",
"Lingfield - (LFD)",
"Lingwood - (LGD)",
"Linlithgow - (LIN)",
"Liphook - (LIP)",
"Liskeard - (LSK)",
"Liss - (LIS)",
"Lisvane & Thornhill - (LVT)",
"Little Kimble - (LTK)",
"Little Sutton - (LTT)",
"Littleborough - (LTL)",
"Littlehampton - (LIT)",
"Littlehaven - (LVN)",
"Littleport - (LTP)",
"Liverpool Central - (LVC)",
"Liverpool James Street - (LVJ)",
"Liverpool Lime Street - (LIV)",
"Liverpool South Parkway - (LPY)",
"Livingston North - (LSN)",
"Livingston South - (LVG)",
"Llanaber - (LLA)",
"Llanbedr - (LBR)",
"Llanbister Road - (LLT)",
"Llanbradach - (LNB)",
"Llandaf - (LLN)",
"Llandanwg - (LDN)",
"Llandecwyn - (LLC)",
"Llandeilo - (LLL)",
"Llandovery - (LLV)",
"Llandrindod - (LLO)",
"Llandudno - (LLD)",
"Llandudno Junction - (LLJ)",
"Llandybie - (LLI)",
"Llanelli - (LLE)",
"Llanfairfechan - (LLF)",
"Llanfairpwll - (LPG)",
"Llangadog - (LLG)",
"Llangammarch - (LLM)",
"Llangennech - (LLH)",
"Llangynllo - (LGO)",
"Llanharan - (LLR)",
"Llanhilleth - (LTH)",
"Llanishen - (LLS)",
"Llanrwst - (LWR)",
"Llansamlet - (LAS)",
"Llantwit Major - (LWM)",
"Llanwrda - (LNR)",
"Llanwrtyd - (LNW)",
"Llwyngwril - (LLW)",
"Llwynypia - (LLY)",
"Loch Awe - (LHA)",
"Loch Eil Outward Bound - (LHE)",
"Lochailort - (LCL)",
"Locheilside - (LCS)",
"Lochgelly - (LCG)",
"Lochluichart - (LCC)",
"Lochwinnoch - (LHW)",
"Lockerbie - (LOC)",
"Lockwood - (LCK)",
"London Blackfriars - (BFR)",
"London Bridge - (LBG)",
"London Cannon Street - (CST)",
"London Charing Cross - (CHX)",
"London Euston - (EUS)",
"London Fenchurch Street - (FST)",
"London Fields - (LOF)",
"London Kings Cross - (KGX)",
"London Liverpool Street - (LST)",
"London Marylebone - (MYB)",
"London Paddington - (PAD)",
"London Road (Brighton) - (LRB)",
"London Road (Guildford) - (LRD)",
"London St Pancras International - (STP)",
"London St Pancras (Intl) - (SPX)",
"London Victoria - (VIC)",
"London Waterloo - (WAT)",
"London Waterloo East - (WAE)",
"Long Buckby - (LBK)",
"Long Eaton - (LGE)",
"Long Preston - (LPR)",
"Longbeck - (LGK)",
"Longbridge - (LOB)",
"Longcross - (LNG)",
"Longfield - (LGF)",
"Longniddry - (LND)",
"Longport - (LPT)",
"Longton - (LGN)",
"Looe - (LOO)",
"Lostock - (LOT)",
"Lostock Gralam - (LTG)",
"Lostock Hall - (LOH)",
"Lostwithiel - (LOS)",
"Loughborough - (LBO)",
"Loughborough Junction - (LGJ)",
"Lowdham - (LOW)",
"Lower Sydenham - (LSY)",
"Lowestoft - (LWT)",
"Ludlow - (LUD)",
"Luton - (LUT)",
"Luton Airport Parkway - (LTN)",
"Luxulyan - (LUX)",
"Lydney - (LYD)",
"Lye (West Midlands) - (LYE)",
"Lymington Pier - (LYP)",
"Lymington Town - (LYT)",
"Lympstone Commando - (LYC)",
"Lympstone Village - (LYM)",
"Lytham - (LTM)",
"Macclesfield - (MAC)",
"Machynlleth - (MCN)",
"Maesteg - (MST)",
"Maesteg (Ewenny Road) - (MEW)",
"Maghull - (MAG)",
"Maiden Newton - (MDN)",
"Maidenhead - (MAI)",
"Maidstone Barracks - (MDB)",
"Maidstone East - (MDE)",
"Maidstone West - (MDW)",
"Malden Manor - (MAL)",
"Mallaig - (MLG)",
"Malton - (MLT)",
"Malvern Link - (MVL)",
"Manchester Airport - (MIA)",
"Manchester Oxford Road - (MCO)",
"Manchester Piccadilly - (MAN)",
"Manchester Utd Football Gd - (MUF)",
"Manchester Victoria - (MCV)",
"Manea - (MNE)",
"Manningtree - (MNG)",
"Manor Park - (MNP)",
"Manor Road - (MNR)",
"Manorbier - (MRB)",
"Manors - (MAS)",
"Mansfield - (MFT)",
"Mansfield Woodhouse - (MSW)",
"March - (MCH)",
"Marden (Kent) - (MRN)",
"Margate - (MAR)",
"Market Harborough - (MHR)",
"Market Rasen - (MKR)",
"Markinch - (MNC)",
"Marks Tey - (MKT)",
"Marlow - (MLW)",
"Marple - (MPL)",
"Marsden (Yorks) - (MSN)",
"Marske - (MSK)",
"Marston Green - (MGN)",
"Martin Mill - (MTM)",
"Martins Heron - (MAO)",
"Marton - (MTO)",
"Maryhill - (MYH)",
"Maryland - (MYL)",
"Maryport - (MRY)",
"Matlock - (MAT)",
"Matlock Bath - (MTB)",
"Mauldeth Road - (MAU)",
"Maxwell Park - (MAX)",
"Maybole - (MAY)",
"Maze Hill - (MZH)",
"Meadowhall - (MHS)",
"Meldreth - (MEL)",
"Melksham - (MKM)",
"Melton Mowbray - (MMO)",
"Melton (Suffolk) - (MES)",
"Menheniot - (MEN)",
"Menston - (MNN)",
"Meols - (MEO)",
"Meols Cop - (MEC)",
"Meopham - (MEP)",
"Merryton - (MEY)",
"Merstham - (MHM)",
"Merthyr Tydfil - (MER)",
"Merthyr Vale - (MEV)",
"Metheringham - (MGM)",
"MetroCentre - (MCE)",
"Mexborough - (MEX)",
"Micheldever - (MIC)",
"Micklefield - (MIK)",
"Middlesbrough - (MBR)",
"Middlewood - (MDL)",
"Midgham - (MDG)",
"Milford Haven - (MFH)",
"Milford (Surrey) - (MLF)",
"Mill Hill Broadway - (MIL)",
"Mill Hill (Lancs) - (MLH)",
"Millbrook (Beds) - (MLB)",
"Millbrook (Hants) - (MBK)",
"Milliken Park - (MIN)",
"Millom - (MLM)",
"Mills Hill (Manchester) - (MIH)",
"Milngavie - (MLN)",
"Milton Keynes Central - (MKC)",
"Minffordd - (MFF)",
"Minster - (MSR)",
"Mirfield - (MIR)",
"Mistley - (MIS)",
"Mitcham Eastfields - (MTC)",
"Mitcham Junction - (MIJ)",
"Mobberley - (MOB)",
"Monifieth - (MON)",
"Monks Risborough - (MRS)",
"Montpelier - (MTP)",
"Montrose - (MTS)",
"Moorfields - (MRF)",
"Moorgate - (MOG)",
"Moorside - (MSD)",
"Moorthorpe - (MRP)",
"Morar - (MRR)",
"Morchard Road - (MRD)",
"Morden South - (MDS)",
"Morecambe - (MCM)",
"Moreton (Dorset) - (MTN)",
"Moreton (Merseyside) - (MRT)",
"Moreton-in-Marsh - (MIM)",
"Morfa Mawddach - (MFA)",
"Morley - (MLY)",
"Morpeth - (MPT)",
"Mortimer - (MOR)",
"Mortlake - (MTL)",
"Moses Gate - (MSS)",
"Moss Side - (MOS)",
"Mossley Hill - (MSH)",
"Mossley (Manchester) - (MSL)",
"Mosspark - (MPK)",
"Moston - (MSO)",
"Motherwell - (MTH)",
"Motspur Park - (MOT)",
"Mottingham - (MTG)",
"Mottisfont & Dunbridge - (DBG)",
"Mouldsworth - (MLD)",
"Moulsecoomb - (MCB)",
"Mount Florida - (MFL)",
"Mount Vernon - (MTV)",
"Mountain Ash - (MTA)",
"Muir of Ord - (MOO)",
"Muirend - (MUI)",
"Musselburgh - (MUB)",
"Mytholmroyd - (MYT)",
"Nafferton - (NFN)",
"Nailsea & Backwell - (NLS)",
"Nairn - (NRN)",
"Nantwich - (NAN)",
"Narberth - (NAR)",
"Narborough - (NBR)",
"Navigation Road - (NVR)",
"Neath - (NTH)",
"Needham Market - (NMT)",
"Neilston - (NEI)",
"Nelson - (NEL)",
"Neston - (NES)",
"Netherfield - (NET)",
"Nethertown - (NRT)",
"Netley - (NTL)",
"New Barnet - (NBA)",
"New Beckenham - (NBC)",
"New Brighton - (NBN)",
"New Clee - (NCE)",
"New Cross - (NWX)",
"New Cross Gate - (NXG)",
"New Cumnock - (NCK)",
"New Eltham - (NEH)",
"New Holland - (NHL)",
"New Hythe - (NHE)",
"New Lane - (NLN)",
"New Malden - (NEM)",
"New Mills Central - (NMC)",
"New Mills Newtown - (NMN)",
"New Milton - (NWM)",
"New Pudsey - (NPD)",
"New Southgate - (NSG)",
"Newark Castle - (NCT)",
"Newark North Gate - (NNG)",
"Newbridge - (NBE)",
"Newbury - (NBY)",
"Newbury Racecourse - (NRC)",
"Newcastle - (NCL)",
"Newcraighall - (NEW)",
"Newhaven Harbour - (NVH)",
"Newhaven Town - (NVN)",
"Newington - (NGT)",
"Newmarket - (NMK)",
"Newport (Essex) - (NWE)",
"Newport (South Wales) - (NWP)",
"Newquay - (NQY)",
"Newstead - (NSD)",
"Newton Abbot - (NTA)",
"Newton Aycliffe - (NAY)",
"Newton for Hyde - (NWN)",
"Newton (Lanark) - (NTN)",
"Newton St Cyres - (NTC)",
"Newton-le-Willows - (NLW)",
"Newtonmore - (NWR)",
"Newton-on-Ayr - (NOA)",
"Newtown (Powys) - (NWT)",
"Ninian Park - (NNP)",
"Nitshill - (NIT)",
"Norbiton - (NBT)",
"Norbury - (NRB)",
"Normans Bay - (NSB)",
"Normanton - (NOR)",
"North Berwick - (NBW)",
"North Camp - (NCM)",
"North Dulwich - (NDL)",
"North Fambridge - (NFA)",
"North Llanrwst - (NLR)",
"North Queensferry - (NQU)",
"North Road (Darlington) - (NRD)",
"North Sheen - (NSH)",
"North Walsham - (NWA)",
"North Wembley - (NWB)",
"Northallerton - (NTR)",
"Northampton - (NMP)",
"Northfield - (NFD)",
"Northfleet - (NFL)",
"Northolt Park - (NLT)",
"Northumberland Park - (NUM)",
"Northwich - (NWI)",
"Norton Bridge - (NTB)",
"Norwich - (NRW)",
"Norwood Junction - (NWD)",
"Nottingham - (NOT)",
"Nuneaton - (NUN)",
"Nunhead - (NHD)",
"Nunthorpe - (NNT)",
"Nutbourne - (NUT)",
"Nutfield - (NUF)",
"Oakengates - (OKN)",
"Oakham - (OKM)",
"Oakleigh Park - (OKL)",
"Oban - (OBN)",
"Ockendon - (OCK)",
"Ockley - (OLY)",
"Okehampton - (OKE)",
"Old Hill - (OHL)",
"Old Roan - (ORN)",
"Old Street - (OLD)",
"Oldfield Park - (OLF)",
"Olton - (OLT)",
"Ore - (ORE)",
"Ormskirk - (OMS)",
"Orpington - (ORP)",
"Orrell - (ORR)",
"Orrell Park - (OPK)",
"Otford - (OTF)",
"Oulton Broad North - (OUN)",
"Oulton Broad South - (OUS)",
"Outwood - (OUT)",
"Overpool - (OVE)",
"Overton - (OVR)",
"Oxenholme Lake District - (OXN)",
"Oxford - (OXF)",
"Oxshott - (OXS)",
"Oxted - (OXT)",
"Paddock Wood - (PDW)",
"Padgate - (PDG)",
"Paignton - (PGN)",
"Paisley Canal - (PCN)",
"Paisley Gilmour Street - (PYG)",
"Paisley St James - (PYJ)",
"Palmers Green - (PAL)",
"Pangbourne - (PAN)",
"Pannal - (PNL)",
"Pantyffynnon - (PTF)",
"Par - (PAR)",
"Parbold - (PBL)",
"Park Street - (PKT)",
"Parkstone (Dorset) - (PKS)",
"Parson Street - (PSN)",
"Partick - (PTK)",
"Parton - (PRN)",
"Patchway - (PWY)",
"Patricroft - (PAT)",
"Patterton - (PTT)",
"Peartree - (PEA)",
"Peckham Rye - (PMR)",
"Pegswood - (PEG)",
"Pemberton - (PEM)",
"Pembrey & Burry Port - (PBY)",
"Pembroke - (PMB)",
"Pembroke Dock - (PMD)",
"Penally - (PNA)",
"Penarth - (PEN)",
"Pencoed - (PCD)",
"Pengam - (PGM)",
"Penge East - (PNE)",
"Penge West - (PNW)",
"Penhelig - (PHG)",
"Penistone - (PNS)",
"Penkridge - (PKG)",
"Penmaenmawr - (PMW)",
"Penmere - (PNM)",
"Penrhiwceiber - (PER)",
"Penrhyndeudraeth - (PRH)",
"Penrith (North Lakes) - (PNR)",
"Penryn (Cornwall) - (PYN)",
"Pensarn (Gwynedd) - (PES)",
"Penshurst - (PHR)",
"Pentre-Bach - (PTB)",
"Pen-y-Bont - (PNY)",
"Penychain - (PNC)",
"Penyffordd - (PNF)",
"Penzance - (PNZ)",
"Perranwell - (PRW)",
"Perry Barr - (PRY)",
"Pershore - (PSH)",
"Perth - (PTH)",
"Peterborough - (PBO)",
"Petersfield - (PTR)",
"Petts Wood - (PET)",
"Pevensey & Westham - (PEV)",
"Pevensey Bay - (PEB)",
"Pewsey - (PEW)",
"Pilning - (PIL)",
"Pinhoe - (PIN)",
"Pitlochry - (PIT)",
"Pitsea - (PSE)",
"Pleasington - (PLS)",
"Plockton - (PLK)",
"Pluckley - (PLC)",
"Plumley - (PLM)",
"Plumpton - (PMP)",
"Plumstead - (PLU)",
"Plymouth - (PLY)",
"Pokesdown - (POK)",
"Polegate - (PLG)",
"Polesworth - (PSW)",
"Pollokshaws East - (PWE)",
"Pollokshaws West - (PWW)",
"Pollokshields East - (PLE)",
"Pollokshields West - (PLW)",
"Polmont - (PMT)",
"Polsloe Bridge - (POL)",
"Ponders End - (PON)",
"Pontarddulais - (PTD)",
"Pontefract Baghill - (PFR)",
"Pontefract Monkhill - (PFM)",
"Pontefract Tanshelf - (POT)",
"Pontlottyn - (PLT)",
"Pontyclun - (PYC)",
"Pont-y-Pant - (PYP)",
"Pontypool & New Inn - (PPL)",
"Pontypridd - (PPD)",
"Poole - (POO)",
"Poppleton - (POP)",
"Port Glasgow - (PTG)",
"Port Sunlight - (PSL)",
"Port Talbot Parkway - (PTA)",
"Portchester - (PTC)",
"Porth - (POR)",
"Porthmadog - (PTM)",
"Portlethen - (PLN)",
"Portslade - (PLD)",
"Portsmouth & Southsea - (PMS)",
"Portsmouth Arms - (PMA)",
"Portsmouth Harbour - (PMH)",
"Possilpark & Parkhouse - (PPK)",
"Potters Bar - (PBR)",
"Poulton-le-Fylde - (PFY)",
"Poynton - (PYT)",
"Prees - (PRS)",
"Prescot - (PSC)",
"Prestatyn - (PRT)",
"Prestbury - (PRB)",
"Preston (Lancs) - (PRE)",
"Preston Park - (PRP)",
"Prestonpans - (PST)",
"Prestwick International Airport - (PRA)",
"Prestwick Town - (PTW)",
"Priesthill & Darnley - (PTL)",
"Princes Risborough - (PRR)",
"Prittlewell - (PRL)",
"Prudhoe - (PRU)",
"Pulborough - (PUL)",
"Purfleet - (PFL)",
"Purley - (PUR)",
"Purley Oaks - (PUO)",
"Putney - (PUT)",
"Pwllheli - (PWL)",
"Pyle - (PYL)",
"Quakers Yard - (QYD)",
"Queenborough - (QBR)",
"Queens Park (Glasgow) - (QPK)",
"Queens Park (London) - (QPW)",
"Queens Road (Peckham) - (QRP)",
"Queenstown Road (Battersea) - (QRB)",
"Quintrell Downs - (QUI)",
"Radcliffe-on-Trent - (RDF)",
"Radlett - (RDT)",
"Radley - (RAD)",
"Radyr - (RDR)",
"Rainford - (RNF)",
"Rainham (Essex) - (RNM)",
"Rainham (Kent) - (RAI)",
"Rainhill - (RNH)",
"Ramsgate - (RAM)",
"Ramsgreave & Wilpshire - (RGW)",
"Rannoch - (RAN)",
"Rauceby - (RAU)",
"Ravenglass for Eskdale - (RAV)",
"Ravensbourne - (RVB)",
"Ravensthorpe - (RVN)",
"Rawcliffe - (RWC)",
"Rayleigh - (RLG)",
"Raynes Park - (RAY)",
"Reading - (RDG)",
"Reading West - (RDW)",
"Rectory Road - (REC)",
"Redbridge - (RDB)",
"Redcar Central - (RCC)",
"Redcar East - (RCE)",
"Reddish North - (RDN)",
"Reddish South - (RDS)",
"Redditch - (RDC)",
"Redhill - (RDH)",
"Redland - (RDA)",
"Redruth - (RED)",
"Reedham (Norfolk) - (REE)",
"Reedham (Surrey) - (RHM)",
"Reigate - (REI)",
"Renton - (RTN)",
"Retford - (RET)",
"Rhiwbina - (RHI)",
"Rhoose Cardiff International Airport - (RIA)",
"Rhosneigr - (RHO)",
"Rhyl - (RHL)",
"Rhymney - (RHY)",
"Ribblehead - (RHD)",
"Rice Lane - (RIL)",
"Richmond (London) - (RMD)",
"Rickmansworth - (RIC)",
"Riddlesdown - (RDD)",
"Ridgmont - (RID)",
"Riding Mill - (RDM)",
"Risca & Pontymister - (RCA)",
"Rishton - (RIS)",
"Robertsbridge - (RBR)",
"Roby - (ROB)",
"Rochdale - (RCD)",
"Roche - (ROC)",
"Rochester - (RTR)",
"Rochford - (RFD)",
"Rock Ferry - (RFY)",
"Rogart - (ROG)",
"Rogerstone - (ROR)",
"Rolleston - (ROL)",
"Roman Bridge - (RMB)",
"Romford - (RMF)",
"Romiley - (RML)",
"Romsey - (ROM)",
"Roose - (ROO)",
"Rose Grove - (RSG)",
"Rose Hill Marple - (RSH)",
"Rosyth - (ROS)",
"Rotherham Central - (RMC)",
"Rotherhithe - (ROE)",
"Roughton Road - (RNR)",
"Rowlands Castle - (RLN)",
"Rowley Regis - (ROW)",
"Roy Bridge - (RYB)",
"Roydon - (RYN)",
"Royston - (RYS)",
"Ruabon - (RUA)",
"Rufford - (RUF)",
"Rugby - (RUG)",
"Rugeley Town - (RGT)",
"Rugeley Trent Valley - (RGL)",
"Runcorn - (RUN)",
"Runcorn East - (RUE)",
"Ruskington - (RKT)",
"Ruswarp - (RUS)",
"Rutherglen - (RUT)",
"Ryde St Johns Road - (RYR)",
"Ryde Esplanade - (RYD)",
"Ryde Pier Head - (RYP)",
"Ryder Brow - (RRB)",
"Rye House - (RYH)",
"Rye (Sussex) - (RYE)",
"Salford Central - (SFD)",
"Salford Crescent - (SLD)",
"Salfords (Surrey) - (SAF)",
"Salhouse - (SAH)",
"Salisbury - (SAL)",
"Saltaire - (SAE)",
"Saltash - (STS)",
"Saltburn - (SLB)",
"Saltcoats - (SLT)",
"Saltmarshe - (SAM)",
"Salwick - (SLW)",
"Sampford Courtenay - (SMC)",
"Sandal & Agbrigg - (SNA)",
"Sandbach - (SDB)",
"Sanderstead - (SNR)",
"Sandhills - (SDL)",
"Sandhurst (Berks) - (SND)",
"Sandling - (SDG)",
"Sandown - (SAN)",
"Sandplace - (SDP)",
"Sandwell & Dudley - (SAD)",
"Sandwich - (SDW)",
"Sandy - (SDY)",
"Sankey for Penketh - (SNK)",
"Sanquhar - (SQH)",
"Sarn - (SRR)",
"Saundersfoot - (SDF)",
"Saunderton - (SDR)",
"Sawbridgeworth - (SAW)",
"Saxilby - (SXY)",
"Saxmundham - (SAX)",
"Scarborough - (SCA)",
"Scotscalder - (SCT)",
"Scotstounhill - (SCH)",
"Scunthorpe - (SCU)",
"Sea Mills - (SML)",
"Seaford (Sussex) - (SEF)",
"Seaforth & Litherland - (SFL)",
"Seaham - (SEA)",
"Seamer - (SEM)",
"Seascale - (SSC)",
"Seaton Carew - (SEC)",
"Seer Green & Jordans - (SRG)",
"Selby - (SBY)",
"Selhurst - (SRS)",
"Sellafield - (SEL)",
"Selling - (SEG)",
"Selly Oak - (SLY)",
"Settle - (SET)",
"Seven Kings - (SVK)",
"Seven Sisters - (SVS)",
"Sevenoaks - (SEV)",
"Severn Beach - (SVB)",
"Severn Tunnel Junction - (STJ)",
"Shadwell - (SDE)",
"Shalford (Surrey) - (SFR)",
"Shanklin - (SHN)",
"Shawford - (SHW)",
"Shawlands - (SHL)",
"Sheerness-on-Sea - (SSS)",
"Sheffield - (SHF)",
"Shelford (Cambs) - (SED)",
"Shenfield - (SNF)",
"Shenstone - (SEN)",
"Shepherd's Bush - (SPB)",
"Shepherds Well - (SPH)",
"Shepley - (SPY)",
"Shepperton - (SHP)",
"Shepreth - (STH)",
"Sherborne - (SHE)",
"Sherburn-in-Elmet - (SIE)",
"Sheringham - (SHM)",
"Shettleston - (SLS)",
"Shieldmuir - (SDM)",
"Shifnal - (SFN)",
"Shildon - (SHD)",
"Shiplake - (SHI)",
"Shipley (Yorks) - (SHY)",
"Shippea Hill - (SPP)",
"Shipton - (SIP)",
"Shirebrook - (SHB)",
"Shirehampton - (SHH)",
"Shireoaks - (SRO)",
"Shirley - (SRL)",
"Shoeburyness - (SRY)",
"Sholing - (SHO)",
"Shoreditch High Street - (SDC)",
"Shoreham (Kent) - (SEH)",
"Shoreham-by-Sea - (SSE)",
"Shortlands - (SRT)",
"Shotton - (SHT)",
"Shotts - (SHS)",
"Shrewsbury - (SHR)",
"Sidcup - (SID)",
"Sileby - (SIL)",
"Silecroft - (SIC)",
"Silkstone Common - (SLK)",
"Silver Street - (SLV)",
"Silverdale - (SVR)",
"Singer - (SIN)",
"Sittingbourne - (SIT)",
"Skegness - (SKG)",
"Skewen - (SKE)",
"Skipton - (SKI)",
"Slade Green - (SGR)",
"Slaithwaite - (SWT)",
"Slateford - (SLA)",
"Sleaford - (SLR)",
"Sleights - (SLH)",
"Slough - (SLO)",
"Small Heath - (SMA)",
"Smallbrook Junction - (SAB)",
"Smethwick Galton Bridge - (SGB)",
"Smethwick Rolfe Street - (SMR)",
"Smitham - (SMI)",
"Smithy Bridge - (SMB)",
"Snaith - (SNI)",
"Snodland - (SDA)",
"Snowdown - (SWO)",
"Sole Street - (SOR)",
"Solihull - (SOL)",
"Somerleyton - (SYT)",
"South Acton - (SAT)",
"South Bank - (SBK)",
"South Bermondsey - (SBM)",
"South Croydon - (SCY)",
"South Elmsall - (SES)",
"South Greenford - (SGN)",
"South Gyle - (SGL)",
"South Hampstead - (SOH)",
"South Kenton - (SOK)",
"South Merton - (SMO)",
"South Milford - (SOM)",
"South Ruislip - (SRU)",
"South Tottenham - (STO)",
"South Wigston - (SWS)",
"South Woodham Ferrers - (SOF)",
"Southall - (STL)",
"Southampton Airport Parkway - (SOA)",
"Southampton Central - (SOU)",
"Southbourne - (SOB)",
"Southbury - (SBU)",
"Southease - (SEE)",
"Southend Airport - (SIA)",
"Southend Central - (SOC)",
"Southend East - (SOE)",
"Southend Victoria - (SOV)",
"Southminster - (SMN)",
"Southport - (SOP)",
"Southwick - (SWK)",
"Sowerby Bridge - (SOW)",
"Spalding - (SPA)",
"Spean Bridge - (SBR)",
"Spital - (SPI)",
"Spondon - (SPO)",
"Spooner Row - (SPN)",
"Spring Road - (SRI)",
"Springburn - (SPR)",
"Springfield - (SPF)",
"Squires Gate - (SQU)",
"St Albans - (SAC)",
"St Albans Abbey - (SAA)",
"St Andrews Road - (SAR)",
"St Annes-on-Sea - (SAS)",
"St Austell - (SAU)",
"St Bees - (SBS)",
"St Budeaux Ferry Road - (SBF)",
"St Budeaux Victoria Road - (SBV)",
"St Columb Road - (SCR)",
"St Denys - (SDN)",
"St Erth - (SER)",
"St Germans - (SGM)",
"St Helens Central - (SNH)",
"St Helens Junction - (SHJ)",
"St Helier (Surrey) - (SIH)",
};
}
I presume that you have not pasted the full list, since you seem to missing stations starting with C-F!
The problem here is that you have coded up what is effectively one large code section. The maximum size that a code section can be is 64 KB, which I suspect you have exceeded once the static data is placed into the compiled module. The cod creation process can't break this up and place this in multiple cod files (search for references to sibling cod files to understand this concept). So you have two options:
Split it up yourself - for example have 26 different arrays each
with a different starting letter
Load the array from a text file, there is no runtime size restriction and even though there is a maximum size of 64 KB for a resource in one cod file, I believe that resources can be split up.
Update
I have actually just tested this, and I can add a 2500 entry array, like the one supplied (in fact I just replicated the contents of the sample 3 times to get over 2500 entries), and it works fine (on a Simulator). So I suspect another problem. Can you try reducing the size of this array to confirm that the problem then disappears? Also please tell us the OS you are building with and the OS on the target device. Is it Simulator or actual device?

Looking for a list of all available languages in iOS [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I don't seem to be able to find a comprehensive list of all language options available in any given iOS version. I am considering my options for app localization and would like to be able to compare available language options in different iOS releases.
Could someone please tell me how I could create such a list programatically?
I think this way I could generate the list for any available iOS version and compare the results.
This is the list of avaliableLocalIdentifiers with the english locale description,
taken from iPod touch iOS 6.0.1.
I do not believe that all these are supported for localisation!
en_IE - English (Ireland)
ro_MD - Romanian (Moldova)
br - Breton
en_GY - English (Guyana)
es_GT - Spanish (Guatemala)
shi_Tfng_MA - Tachelhit (Tifinagh, Morocco)
mr - Marathi
bs - Bosnian
en_AS - English (American Samoa)
ksf - Bafia
sr_Latn_ME - Serbian (Latin, Montenegro)
ms - Malay
ms_MY - Malay (Malaysia)
mt - Maltese
ha - Hausa
nb_NO - Norwegian Bokmål (Norway)
en_BZ - English (Belize)
pt_BR - Portuguese (Brazil)
or_IN - Oriya (India)
is_IS - Icelandic (Iceland)
mn_Cyrl_MN - Mongolian (Cyrillic, Mongolia)
ar_IQ - Arabic (Iraq)
he - Hebrew
zh_Hans_CN - Chinese (Simplified, China)
my - Burmese
bas - Basaa
mer - Meru
en_JM - English (Jamaica)
dz_BT - Dzongkha (Bhutan)
teo_KE - Teso (Kenya)
cy_GB - Welsh (United Kingdom)
sg - Sango
it_CH - Italian (Switzerland)
de_LU - German (Luxembourg)
en_US - English (United States)
hi - Hindi
hu_HU - Hungarian (Hungary)
uz_Latn_UZ - Uzbek (Latin, Uzbekistan)
af_NA - Afrikaans (Namibia)
si - Sinhala
fr_BI - French (Burundi)
ga_IE - Irish (Ireland)
mfe - Morisyen
en_CA - English (Canada)
ne_IN - Nepali (India)
rwk_TZ - Rwa (Tanzania)
en_AU - English (Australia)
sk - Slovak
teo - Teso
sl - Slovenian
tk_Latn_TM - Turkmen (Latin, Turkmenistan)
tzm_Latn - Central Morocco Tamazight (Latin)
ee_GH - Ewe (Ghana)
kde - Makonde
sn - Shona
dyo_SN - Jola-Fonyi (Senegal)
mas_TZ - Masai (Tanzania)
en_SG - English (Singapore)
so - Somali
nyn_UG - Nyankole (Uganda)
br_FR - Breton (France)
fr_BJ - French (Benin)
pt_MZ - Portuguese (Mozambique)
hr - Croatian
az_Latn - Azerbaijani (Latin)
sq - Albanian
sr - Serbian
sw_KE - Swahili (Kenya)
ca - Catalan
hu - Hungarian
et_EE - Estonian (Estonia)
lag_TZ - Langi (Tanzania)
nb - Norwegian Bokmål
bn_IN - Bengali (India)
sv - Swedish
th_TH - Thai (Thailand)
ml_IN - Malayalam (India)
sr_Cyrl_RS - Serbian (Cyrillic, Serbia)
sw - Swahili
nd - North Ndebele
ta_IN - Tamil (India)
fr_MQ - French (Martinique)
hy - Armenian
ne - Nepali
es_AR - Spanish (Argentina)
pt_AO - Portuguese (Angola)
ne_NP - Nepali (Nepal)
ar_BH - Arabic (Bahrain)
hi_IN - Hindi (India)
bo_IN - Tibetan (India)
seh - Sena
de_DE - German (Germany)
fr_BL - French (Saint Barthélemy)
fr_MR - French (Mauritania)
fa_IR - Persian (Iran)
nl - Dutch
es_PR - Spanish (Puerto Rico)
en_PW - English (Palau)
rn_BI - Rundi (Burundi)
nn - Norwegian Nynorsk
kk_Cyrl - Kazakh (Cyrillic)
sl_SI - Slovenian (Slovenia)
dua - Duala
kea - Kabuverdianu
ig_NG - Igbo (Nigeria)
kln - Kalenjin
yo - Yoruba
sv_FI - Swedish (Finland)
ru_MD - Russian (Moldova)
en_ZW - English (Zimbabwe)
brx_IN - Bodo (India)
fil_PH - Filipino (Philippines)
cs - Czech
pt_GW - Portuguese (Guinea-Bissau)
bn_BD - Bengali (Bangladesh)
de_AT - German (Austria)
luo - Luo
sk_SK - Slovak (Slovakia)
ar_001 - Arabic (World)
es_US - Spanish (United States)
ta - Tamil
mk_MK - Macedonian (Macedonia)
om_KE - Oromo (Kenya)
da_DK - Danish (Denmark)
ko_KR - Korean (South Korea)
shi_Latn - Tachelhit (Latin)
ff_SN - Fulah (Senegal)
id - Indonesian
sr_Cyrl_ME - Serbian (Cyrillic, Montenegro)
kde_TZ - Makonde (Tanzania)
cy - Welsh
mgh - Makhuwa-Meetto
te - Telugu
fr_GN - French (Guinea)
fo_FO - Faroese (Faroe Islands)
ig - Igbo
it_IT - Italian (Italy)
uk_UA - Ukrainian (Ukraine)
tg - Tajik
vai - Vai
bm_ML - Bambara (Mali)
en_SL - English (Sierra Leone)
ii - Sichuan Yi
ses - Koyraboro Senni
th - Thai
ti - Tigrinya
ru_KZ - Russian (Kazakhstan)
te_IN - Telugu (India)
tk - Turkmen
cs_CZ - Czech (Czech Republic)
ar_AE - Arabic (United Arab Emirates)
brx - Bodo
haw - Hawaiian
tzm_Latn_MA - Central Morocco Tamazight (Latin, Morocco)
so_DJ - Somali (Djibouti)
uz_Cyrl_UZ - Uzbek (Cyrillic, Uzbekistan)
to - Tongan
ewo_CM - Ewondo (Cameroon)
nl_AW - Dutch (Aruba)
ar_MR - Arabic (Mauritania)
sn_ZW - Shona (Zimbabwe)
en_IN - English (India)
en_TT - English (Trinidad and Tobago)
tr - Turkish
is - Icelandic
fr_GP - French (Guadeloupe)
luy - Luyia
es_NI - Spanish (Nicaragua)
it - Italian
da - Danish
kln_KE - Kalenjin (Kenya)
tk_Latn - Turkmen (Latin)
en_BB - English (Barbados)
ar_DZ - Arabic (Algeria)
ar_SY - Arabic (Syria)
ha_Latn - Hausa (Latin)
en_MH - English (Marshall Islands)
mr_IN - Marathi (India)
en_GB - English (United Kingdom)
de - German
fr_GQ - French (Equatorial Guinea)
ky_KG - Kirghiz (Kyrgyzstan)
pt_PT - Portuguese (Portugal)
fr_RW - French (Rwanda)
nus_SD - Nuer (Sudan)
asa - Asu
zh - Chinese
ha_Latn_GH - Hausa (Latin, Ghana)
bo_CN - Tibetan (China)
kam_KE - Kamba (Kenya)
dua_CM - Duala (Cameroon)
khq_ML - Koyra Chiini (Mali)
ur_IN - Urdu (India)
ro_RO - Romanian (Romania)
om - Oromo
ksb_TZ - Shambala (Tanzania)
gu_IN - Gujarati (India)
fr_TD - French (Chad)
jmc - Machame
ja_JP - Japanese (Japan)
so_ET - Somali (Ethiopia)
nl_NL - Dutch (Netherlands)
es_ES - Spanish (Spain)
or - Oriya
yo_NG - Yoruba (Nigeria)
es_PY - Spanish (Paraguay)
mua_CM - Mundang (Cameroon)
fa_AF - Persian (Afghanistan)
en_HK - English (Hong Kong SAR China)
luo_KE - Luo (Kenya)
ja - Japanese
twq - Tasawaq
en_BE - English (Belgium)
es_UY - Spanish (Uruguay)
dje_NE - Zarma (Niger)
luy_KE - Luyia (Kenya)
naq - Nama
si_LK - Sinhala (Sri Lanka)
zu - Zulu
bs_BA - Bosnian (Bosnia and Herzegovina)
zh_Hans_MO - Chinese (Simplified, Macau SAR China)
fr_KM - French (Comoros)
zh_Hant_HK - Chinese (Traditional, Hong Kong SAR China)
dz - Dzongkha
swc - Congo Swahili
asa_TZ - Asu (Tanzania)
az_Cyrl - Azerbaijani (Cyrillic)
ewo - Ewondo
gv_GB - Manx (United Kingdom)
ti_ER - Tigrinya (Eritrea)
be_BY - Belarusian (Belarus)
uk - Ukrainian
nyn - Nyankole
cgg_UG - Chiga (Uganda)
de_CH - German (Switzerland)
fr_TG - French (Togo)
jmc_TZ - Machame (Tanzania)
ta_LK - Tamil (Sri Lanka)
so_SO - Somali (Somalia)
es_DO - Spanish (Dominican Republic)
fr_LU - French (Luxembourg)
shi_Latn_MA - Tachelhit (Latin, Morocco)
swc_CD - Congo Swahili (Congo - Kinshasa)
kn_IN - Kannada (India)
hy_AM - Armenian (Armenia)
fil - Filipino
bas_CM - Basaa (Cameroon)
ar_TD - Arabic (Chad)
ur - Urdu
bez_TZ - Bena (Tanzania)
haw_US - Hawaiian (United States)
tg_Cyrl - Tajik (Cyrillic)
pa - Punjabi
ee_TG - Ewe (Togo)
ti_ET - Tigrinya (Ethiopia)
sr_Latn_BA - Serbian (Latin, Bosnia and Herzegovina)
ee - Ewe
sv_SE - Swedish (Sweden)
ki_KE - Kikuyu (Kenya)
zh_Hans - Chinese (Simplified)
bem - Bemba
uz - Uzbek
ar_YE - Arabic (Yemen)
seh_MZ - Sena (Mozambique)
ru_UA - Russian (Ukraine)
fr_SC - French (Seychelles)
ar_KM - Arabic (Comoros)
en_ZA - English (South Africa)
nn_NO - Norwegian Nynorsk (Norway)
mas_KE - Masai (Kenya)
ar_EG - Arabic (Egypt)
el - Greek
pl - Polish
nl_BE - Dutch (Belgium)
en - English
uz_Latn - Uzbek (Latin)
eo - Esperanto
shi - Tachelhit
kok - Konkani
mas - Masai
fr_FR - French (France)
rof - Rombo
en_MP - English (Northern Mariana Islands)
de_BE - German (Belgium)
ar_EH - Arabic (Western Sahara)
es_CL - Spanish (Chile)
en_VI - English (U.S. Virgin Islands)
es - Spanish
ps - Pashto
et - Estonian
vai_Latn - Vai (Latin)
pt - Portuguese
eu - Basque
ka - Georgian
fr_NE - French (Niger)
eu_ES - Basque (Spain)
mgh_MZ - Makhuwa-Meetto (Mozambique)
zu_ZA - Zulu (South Africa)
ar_SA - Arabic (Saudi Arabia)
chr_US - Cherokee (United States)
cgg - Chiga
lag - Langi
az_Latn_AZ - Azerbaijani (Latin, Azerbaijan)
es_VE - Spanish (Venezuela)
el_GR - Greek (Greece)
el_CY - Greek (Cyprus)
mfe_MU - Morisyen (Mauritius)
ki - Kikuyu
vi - Vietnamese
rwk - Rwa
bez - Bena
kk - Kazakh
kl - Kalaallisut
zh_Hant - Chinese (Traditional)
fr_CA - French (Canada)
km - Khmer
es_HN - Spanish (Honduras)
agq_CM - Aghem (Cameroon)
kn - Kannada
ii_CN - Sichuan Yi (China)
mn_Cyrl - Mongolian (Cyrillic)
en_BM - English (Bermuda)
ko - Korean
ln_CD - Lingala (Congo - Kinshasa)
en_GM - English (Gambia)
es_CO - Spanish (Colombia)
guz_KE - Gusii (Kenya)
es_PA - Spanish (Panama)
twq_NE - Tasawaq (Niger)
en_NZ - English (New Zealand)
fa - Persian
en_US_POSIX - English (United States, Computer)
dav_KE - Taita (Kenya)
lt_LT - Lithuanian (Lithuania)
en_SZ - English (Swaziland)
ar_SD - Arabic (Sudan)
rof_TZ - Rombo (Tanzania)
uz_Arab_AF - Uzbek (Arabic, Afghanistan)
vi_VN - Vietnamese (Vietnam)
en_MT - English (Malta)
kw - Cornish
yav_CM - Yangben (Cameroon)
ta_MY - Tamil (Malaysia)
ru_KG - Russian (Kyrgyzstan)
kab - Kabyle
ky - Kirghiz
ff - Fulah
en_PG - English (Papua New Guinea)
to_TO - Tongan (Tonga)
ar_LY - Arabic (Libya)
af_ZA - Afrikaans (South Africa)
de_LI - German (Liechtenstein)
sr_Cyrl_BA - Serbian (Cyrillic, Bosnia and Herzegovina)
fi - Finnish
ksf_CM - Bafia (Cameroon)
khq - Koyra Chiini
gsw - Swiss German
es_SV - Spanish (El Salvador)
fr_DJ - French (Djibouti)
en_MU - English (Mauritius)
sr_Latn - Serbian (Latin)
pl_PL - Polish (Poland)
kea_CV - Kabuverdianu (Cape Verde)
pa_Arab - Punjabi (Arabic)
fr_MC - French (Monaco)
en_PH - English (Philippines)
saq - Samburu
ar_PS - Arabic (Palestinian Territories)
fr_CD - French (Congo - Kinshasa)
bem_ZM - Bemba (Zambia)
ru_RU - Russian (Russia)
uz_Cyrl - Uzbek (Cyrillic)
pa_Guru - Punjabi (Gurmukhi)
vai_Vaii - Vai (Vai)
fo - Faroese
so_KE - Somali (Kenya)
ln_CG - Lingala (Congo - Brazzaville)
ar_OM - Arabic (Oman)
pt_ST - Portuguese (São Tomé and Príncipe)
kl_GL - Kalaallisut (Greenland)
fr - French
es_CR - Spanish (Costa Rica)
ses_ML - Koyraboro Senni (Mali)
tzm - Central Morocco Tamazight
mer_KE - Meru (Kenya)
xog - Soga
xog_UG - Soga (Uganda)
nl_SX - Dutch (Sint Maarten)
en_FJ - English (Fiji)
en_MW - English (Malawi)
ar_MA - Arabic (Morocco)
kam - Kamba
am_ET - Amharic (Ethiopia)
af - Afrikaans
ar_TN - Arabic (Tunisia)
es_PE - Spanish (Peru)
sbp_TZ - Sangu (Tanzania)
fr_CF - French (Central African Republic)
vun_TZ - Vunjo (Tanzania)
lg - Ganda
ar_JO - Arabic (Jordan)
ebu - Embu
fr_RE - French (Réunion)
ha_Latn_NG - Hausa (Latin, Nigeria)
lv_LV - Latvian (Latvia)
ak - Akan
chr - Cherokee
az_Cyrl_AZ - Azerbaijani (Cyrillic, Azerbaijan)
dav - Taita
es_419 - Spanish (Latin America)
ebu_KE - Embu (Kenya)
fr_MF - French (Saint Martin)
am - Amharic
en_PK - English (Pakistan)
fr_CG - French (Congo - Brazzaville)
dje - Zarma
dyo - Jola-Fonyi
pa_Guru_IN - Punjabi (Gurmukhi, India)
ln - Lingala
ak_GH - Akan (Ghana)
ar_DJ - Arabic (Djibouti)
en_BS - English (Bahamas)
lo - Lao
zh_Hant_TW - Chinese (Traditional, Taiwan)
lg_UG - Ganda (Uganda)
ar_KW - Arabic (Kuwait)
ar - Arabic
fr_MG - French (Madagascar)
ca_ES - Catalan (Spain)
as - Assamese
he_IL - Hebrew (Israel)
sbp - Sangu
fr_GA - French (Gabon)
mg_MG - Malagasy (Madagascar)
my_MM - Burmese (Myanmar [Burma])
ps_AF - Pashto (Afghanistan)
fr_CH - French (Switzerland)
vun - Vunjo
lt - Lithuanian
kk_Cyrl_KZ - Kazakh (Cyrillic, Kazakhstan)
ga - Irish
en_FM - English (Micronesia)
lu - Luba-Katanga
nmg - Kwasio
es_BO - Spanish (Bolivia)
lv - Latvian
fr_YT - French (Mayotte)
km_KH - Khmer (Cambodia)
teo_UG - Teso (Uganda)
fr_SN - French (Senegal)
om_ET - Oromo (Ethiopia)
ms_BN - Malay (Brunei)
ar_ER - Arabic (Eritrea)
gsw_CH - Swiss German (Switzerland)
az - Azerbaijani
fi_FI - Finnish (Finland)
tr_TR - Turkish (Turkey)
fr_CI - French (Côte d’Ivoire)
en_UM - English (U.S. Minor Outlying Islands)
sr_Cyrl - Serbian (Cyrillic)
ur_PK - Urdu (Pakistan)
hr_HR - Croatian (Croatia)
nl_CW - Dutch (Curaçao)
nmg_CM - Kwasio (Cameroon)
en_GU - English (Guam)
es_EC - Spanish (Ecuador)
gl_ES - Galician (Spain)
zh_Hant_MO - Chinese (Traditional, Macau SAR China)
gl - Galician
mt_MT - Maltese (Malta)
ha_Latn_NE - Hausa (Latin, Niger)
en_NA - English (Namibia)
rm - Romansh
kw_GB - Cornish (United Kingdom)
zh_Hans_SG - Chinese (Simplified, Singapore)
rn - Rundi
ro - Romanian
rm_CH - Romansh (Switzerland)
saq_KE - Samburu (Kenya)
vai_Vaii_LR - Vai (Vai, Liberia)
ka_GE - Georgian (Georgia)
es_GQ - Spanish (Equatorial Guinea)
sr_Latn_RS - Serbian (Latin, Serbia)
zh_Hans_HK - Chinese (Simplified, Hong Kong SAR China)
agq - Aghem
gu - Gujarati
lo_LA - Lao (Laos)
ru - Russian
en_SB - English (Solomon Islands)
gv - Manx
en_BW - English (Botswana)
yav - Yangben
ta_SG - Tamil (Singapore)
fr_BE - French (Belgium)
bg_BG - Bulgarian (Bulgaria)
es_MX - Spanish (Mexico)
rw - Kinyarwanda
be - Belarusian
nd_ZW - North Ndebele (Zimbabwe)
mua - Mundang
kab_DZ - Kabyle (Algeria)
bg - Bulgarian
tg_Cyrl_TJ - Tajik (Cyrillic, Tajikistan)
mg - Malagasy
sg_CF - Sango (Central African Republic)
pa_Arab_PK - Punjabi (Arabic, Pakistan)
sw_TZ - Swahili (Tanzania)
en_SC - English (Seychelles)
nus - Nuer
shi_Tfng - Tachelhit (Tifinagh)
ar_QA - Arabic (Qatar)
naq_NA - Nama (Namibia)
fr_BF - French (Burkina Faso)
rw_RW - Kinyarwanda (Rwanda)
as_IN - Assamese (India)
guz - Gusii
ksb - Shambala
fr_ML - French (Mali)
mk - Macedonian
kok_IN - Konkani (India)
sq_AL - Albanian (Albania)
ml - Malayalam
fr_GF - French (French Guiana)
bm - Bambara
lu_CD - Luba-Katanga (Congo - Kinshasa)
fr_CM - French (Cameroon)
bn - Bengali
ar_LB - Arabic (Lebanon)
id_ID - Indonesian (Indonesia)
uz_Arab - Uzbek (Arabic)
mn - Mongolian
bo - Tibetan
vai_Latn_LR - Vai (Latin, Liberia)
There is no definite published list (as far as I know), for the simple reason that the locales list might change even in minor version updates.
The closes you get to such list is the Language Support section of the iPhone technical specs:
- iPhone 4
- iPhone 3GS
- iPhone 3G
- iPhone 2 is actually missing this section
If you want the definitive list of languages and locales supported by specific iOS version, you should write a simple program that uses NSLocale::availableLocaleIdentifiers to obtain the list, and NSLocale::componentsFromLocaleIdentifier: to extract the canonical codes (or the corresponding CFLocale).
I've a blog post with the right languages listed next to a screenshot of iOS 4's International settings to make it easier for you:
http://kb.applingua.com/2011/07/supported-ios-languages-which-languages/
Otherwise:
English (U.S.)
English (UK)
French (France)
German
Traditional Chinese
Simplified Chinese
Dutch
Italian
Spanish
Portuguese (Brazil)
Portuguese (Portugal)
Danish
Swedish
Finnish
Norwegian
Korean
Japanese
Russian
Polish
Turkish
Ukrainian
Hungarian
Arabic
Thai
Czech
Greek
Hebrew
Indonesian
Malay
Romanian
Slovak
Croatian
Catalan
Vietnamese
Here is the list from Apple for all the available languages
static const char * const __CFBundleLanguageNamesArray[] = {
"English", "French", "German", "Italian", "Dutch", "Swedish", "Spanish", "Danish",
"Portuguese", "Norwegian", "Hebrew", "Japanese", "Arabic", "Finnish", "Greek", "Icelandic",
"Maltese", "Turkish", "Croatian", "Chinese", "Urdu", "Hindi", "Thai", "Korean",
"Lithuanian", "Polish", "Hungarian", "Estonian", "Latvian", "Sami", "Faroese", "Farsi",
"Russian", "Chinese", "Dutch", "Irish", "Albanian", "Romanian", "Czech", "Slovak",
"Slovenian", "Yiddish", "Serbian", "Macedonian", "Bulgarian", "Ukrainian", "Byelorussian", "Uzbek",
"Kazakh", "Azerbaijani", "Azerbaijani", "Armenian", "Georgian", "Moldavian", "Kirghiz", "Tajiki",
"Turkmen", "Mongolian", "Mongolian", "Pashto", "Kurdish", "Kashmiri", "Sindhi", "Tibetan",
"Nepali", "Sanskrit", "Marathi", "Bengali", "Assamese", "Gujarati", "Punjabi", "Oriya",
"Malayalam", "Kannada", "Tamil", "Telugu", "Sinhalese", "Burmese", "Khmer", "Lao",
"Vietnamese", "Indonesian", "Tagalog", "Malay", "Malay", "Amharic", "Tigrinya", "Oromo",
"Somali", "Swahili", "Kinyarwanda", "Rundi", "Nyanja", "Malagasy", "Esperanto", "",
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
"Welsh", "Basque", "Catalan", "Latin", "Quechua", "Guarani", "Aymara", "Tatar",
"Uighur", "Dzongkha", "Javanese", "Sundanese", "Galician", "Afrikaans", "Breton", "Inuktitut",
"Scottish", "Manx", "Irish", "Tongan", "Greek", "Greenlandic", "Azerbaijani", "Nynorsk"
};
// string, with groups of 3 characters being 1 element in the array of abbreviations
const char * __CFBundleLanguageAbbreviationsArray =
"en\0" "fr\0" "de\0" "it\0" "nl\0" "sv\0" "es\0" "da\0"
"pt\0" "nb\0" "he\0" "ja\0" "ar\0" "fi\0" "el\0" "is\0"
"mt\0" "tr\0" "hr\0" "zh\0" "ur\0" "hi\0" "th\0" "ko\0"
"lt\0" "pl\0" "hu\0" "et\0" "lv\0" "se\0" "fo\0" "fa\0"
"ru\0" "zh\0" "nl\0" "ga\0" "sq\0" "ro\0" "cs\0" "sk\0"
"sl\0" "yi\0" "sr\0" "mk\0" "bg\0" "uk\0" "be\0" "uz\0"
"kk\0" "az\0" "az\0" "hy\0" "ka\0" "mo\0" "ky\0" "tg\0"
"tk\0" "mn\0" "mn\0" "ps\0" "ku\0" "ks\0" "sd\0" "bo\0"
"ne\0" "sa\0" "mr\0" "bn\0" "as\0" "gu\0" "pa\0" "or\0"
"ml\0" "kn\0" "ta\0" "te\0" "si\0" "my\0" "km\0" "lo\0"
"vi\0" "id\0" "tl\0" "ms\0" "ms\0" "am\0" "ti\0" "om\0"
"so\0" "sw\0" "rw\0" "rn\0" "\0\0\0" "mg\0" "eo\0" "\0\0\0"
"\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0"
"\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0"
"\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0"
"\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0" "\0\0\0"
"cy\0" "eu\0" "ca\0" "la\0" "qu\0" "gn\0" "ay\0" "tt\0"
"ug\0" "dz\0" "jv\0" "su\0" "gl\0" "af\0" "br\0" "iu\0"
"gd\0" "gv\0" "ga\0" "to\0" "el\0" "kl\0" "az\0" "nn\0";
Here is the link for reference
http://www.opensource.apple.com/source/CF/CF-550.13/CFBundle_Resources.c
Locale list with all the countries and codes.
(Note(*) to get all the list run code on the device and not on simulator, which has limited languages only)
NSArray *allLocales = [NSLocale availableLocaleIdentifiers];
for (int i = 0; i < [allLocales count]; i++) {
NSLog(#"%# %#", [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:[allLocales objectAtIndex:i]],
allLocales[i]);
}

Resources