請問如何從程式load string

Mac OS X 平台上程式設計的相關問題討論

版主: bryanchangdigdog謝孟叡

回覆文章
內容
發表人
mummy
新生訓練中
文章: 8
註冊時間: 04/14/2008 1:32 am

請問如何從程式load string

#1 文章 mummy »

我是剛開始學Cocoa, 1.請問如何從程式修改GUI string (EX: Button上原本)這些String是我先編輯好( 要放哪?? ) 2. 如要支援多國語言, 讓始用著選擇, 就show不同語言?? 有任何example可參考嗎???
頭像
bryanchang
討論區管理員
文章: 7057
註冊時間: 04/19/2001 1:01 am
來自: The '60s
聯繫:

#2 文章 bryanchang »

圖檔
mummy
新生訓練中
文章: 8
註冊時間: 04/14/2008 1:32 am

#3 文章 mummy »

有找過一些網站跟example( http://developer.apple.com/zh/...),但所有程式都是在開發程式時, UI string就先寫好, 是否可先吧strings 編輯好(要放在哪??plist??) 執行程式後在動態load (EX: like VC++ resource, laodstring),
可以給我一些範例or function name我在去查??
頭像
atst
基本會員
文章: 40
註冊時間: 08/19/2004 10:48 pm
聯繫:

#4 文章 atst »

mummy 寫:有找過一些網站跟example( http://developer.apple.com/zh/...),但所有程式都是在開發程式時, UI string就先寫好, 是否可先吧strings 編輯好(要放在哪??plist??) 執行程式後在動態load (EX: like VC++ resource, laodstring),
可以給我一些範例or function name我在去查??
//Header
@interface MyObject: NSObject
{
IBOutlet NSControl* aControl;
}
@end

//.m
@implementation MyObject
- (void)awakeFromNib
{
if(aControl)
[aControl setTitle:@"myString"];
}

大概是像這樣...要設Button或Control的字串,請找setTitle or setString or setStringValue.
要從resource 讀字串,請找NSBundle
若是要從檔案讀字串, NSStream, NSFileHandle, NSFileManager都會是你的方向,甚至最簡單的,去查 NSData.
做法百百種,你可能要對自己的問題描述的更清楚一點.
mummy
新生訓練中
文章: 8
註冊時間: 04/14/2008 1:32 am

#5 文章 mummy »

thank, 因找了好幾天, 還是沒概念 >_<

因開發Application 都支援多國語言(ex: English, Simplifeied Chinese, Tranditional Chinese, Japanse....),且始用的人自己選擇要使用什麼語言,可隨時更換, 而不用跟著OS, 所以想要事先編輯好多國字串...
1. 是不是要建所有語言 .lproj (?? English.lproj, zh_TW.lproj....)
2. 是不是要從 .lproj load string?? 要如何load??
頭像
rlong
嗜冰客
文章: 1530
註冊時間: 04/30/2001 1:01 am
來自: 新竹
聯繫:

#6 文章 rlong »

mummy 寫:thank, 因找了好幾天, 還是沒概念 >_<

因開發Application 都支援多國語言(ex: English, Simplifeied Chinese, Tranditional Chinese, Japanse....),且始用的人自己選擇要使用什麼語言,可隨時更換, 而不用跟著OS, 所以想要事先編輯好多國字串...
1. 是不是要建所有語言 .lproj (?? English.lproj, zh_TW.lproj....)
2. 是不是要從 .lproj load string?? 要如何load??
沒錯,您說的完全正確!

例如:
File "xxx.m"

[panel setTitle:[[NSBundle mainBundle] localizedStringForKey:@"chooseFile"
value:@"Choose project file"
table:@"InfoPlist"]];


File "infoPlist.strings"

"chooseFile" = "拜託您,請選擇檔案 !"
:D
I love OPERA !
mummy
新生訓練中
文章: 8
註冊時間: 04/14/2008 1:32 am

#7 文章 mummy »

真是多謝, 有個方向, 就較容易查詢, 讀了NSBundle...
不過還是有點不等懂 .nib
我如要支援6種語言 不就要建6個(.nib and .strings)然後去編輯每個.nib??
還是有其他方法?? 建6個.nib,好像不太對?
有什麼範例可參考嗎?
頭像
rlong
嗜冰客
文章: 1530
註冊時間: 04/30/2001 1:01 am
來自: 新竹
聯繫:

#8 文章 rlong »

您只要建好一種語言的 nib/.strings file 就可以了,
以後可以在這個 nib/.strings file 的 info 視窗去 add localization 其他語言的 nib file 以及 .strings file,
然後到各個語言的 .nib/.strings file 去修改每一個 string 成為該語言的 string

各種語言的 String 當然要您自己去添加囉,
XCODE 又不是翻譯機,他怎麼知道您在其他語言相對映的 string 是什麼東東啊!
I love OPERA !
頭像
atst
基本會員
文章: 40
註冊時間: 08/19/2004 10:48 pm
聯繫:

#9 文章 atst »

mummy 寫:真是多謝, 有個方向, 就較容易查詢, 讀了NSBundle...
不過還是有點不等懂 .nib
我如要支援6種語言 不就要建6個(.nib and .strings)然後去編輯每個.nib??
還是有其他方法?? 建6個.nib,好像不太對?
有什麼範例可參考嗎?
你的需求既然是多語系的話,除了NSBundle之外,你還需要一些其他的幫助。
建議你以localization為關鍵字,去查詢一下ADC,相信會有不錯的收獲。
mummy
新生訓練中
文章: 8
註冊時間: 04/14/2008 1:32 am

#10 文章 mummy »

不好意思, 我又來發問

順利建好多個 .lproj
( ex: en.lproj => main.nib InfoPlist.strings
fr.lproj => main.nib InfoPlist.strings
.......
)

但當始用的人, 選擇要使用什麼語言,要如何可隨時更換 GUI and String(ex: en->fr), 查了NSLocate (Available in Mac OS X v10.4 and later.)好像有function可用(setLocale),可是只支援 OS x v10.4, 我要用什麼funtion 才可用在(OS X 10.1.2 and later) 隨時更換 GUI and String
回覆文章