Última atividade 10 months ago

這段 Python 程式碼使用 工廠方法模式(Factory Method Pattern)來實現 多語言在地化(Localization)。它定義了 English(英文)、Greek(希臘文)、Chinese(中文)三種 Localizer 類別,透過 get_localizer(language) 方法 根據指定語言動態選擇適當的翻譯器。 執行時,程式會將 "dog parrot cat bear" 逐字進行翻譯,並輸出對應語言的結果。這適用於 國際化(i18n)開發、跨語系應用程式、系統訊息翻譯 等場景,讓程式能 彈性支援不同語言。

timmy revisou este gist 10 months ago. Ir para a revisão

Sem alterações

timmy revisou este gist 10 months ago. Ir para a revisão

Sem alterações

timmy revisou este gist 1 year ago. Ir para a revisão

1 file changed, 73 insertions

factory_method_example.py(arquivo criado)

@@ -0,0 +1,73 @@
1 + #!/usr/bin/env python
2 + # -*- coding: utf-8 -*-
3 +
4 +
5 + """
6 + factory.py: 工廠方法模式的範例程式
7 +
8 + Author: Timmy
9 + Copyright: Copyright 2022, Timmy
10 + 授權方式: MIT
11 + 版本: 1.0
12 + """
13 +
14 +
15 + class GreekLocalizer:
16 + def __init__(self): # 建構子,在建立物件時會自動執行
17 + self.translations = {"dog": "σκύλος", "cat": "γάτα"} # 定義字典 translations
18 +
19 + def localize(self, msg): # 定義 localize 方法
20 + return self.translations.get(msg, msg) # 傳回 translations 字典的對應轉換,若無則傳回原本的 msg
21 +
22 +
23 + class GreekLocalizer:
24 + def __init__(self): # 建構子,在建立物件時會自動執行
25 + self.translations = {"dog": "σκύλος", "cat": "γάτα"} # 定義字典 translations
26 +
27 + def localize(self, msg): # 定義 localize 方法
28 + return self.translations.get(msg, msg) # 傳回 translations 字典的對應轉換,若無則傳回原本的 msg
29 +
30 +
31 + class EnglishLocalizer: # 定義 EnglishLocalizer 類別
32 + def localize(self, msg): # 定義 localize 方法
33 + return msg # 傳回原本的 msg,即不進行轉換
34 +
35 +
36 + class ChineseLocalizer:
37 + def __init__(self): # 建構子,在建立物件時會自動執行
38 + self.translations = {"dog": "狗", "cat": "貓"} # 定義字典 translations
39 +
40 + def localize(self, msg): # 定義 localize 方法
41 + return self.translations.get(msg, msg) # 傳回 translations 字典的對應轉換,若無則傳回原本的 msg
42 +
43 +
44 + def get_localizer(language="English"): # 定義 get_localizer 函式
45 + """Factory"""
46 +
47 + # 定義字典 localizers
48 + localizers = {
49 + "English": EnglishLocalizer, # 英文的 Localizer
50 + "Greek": GreekLocalizer, # 希臘文的 Localizer
51 + "Chinese": ChineseLocalizer, # 中文的 Localizer
52 + }
53 +
54 + # 傳回對應語言的 Localizer 物件
55 + return localizers[language]()
56 +
57 +
58 + def main():
59 +
60 + e, g, ch = (
61 + get_localizer(language="English"),
62 + get_localizer(language="Greek"),
63 + get_localizer(language="Chinese"),
64 + )
65 +
66 + # 將字串 "dog parrot cat bear" 依照空白斷開,並按順序逐一取出
67 + for msg in "dog parrot cat bear".split():
68 + # 印出英文、希臘文、中文的 Localizer 對於該字串
69 + print(e.localize(msg), g.localize(msg), ch.localize(msg))
70 +
71 +
72 + if __name__ == "__main__":
73 + main()
Próximo Anterior