This commit is contained in:
Zylan
2025-03-31 14:02:14 +08:00
parent c88d931b4e
commit 7dbf51060a
2 changed files with 781 additions and 593 deletions

View File

@@ -22,6 +22,552 @@ const defaultContext: LanguageContextType = {
// 创建上下文
const LanguageContext = createContext<LanguageContextType>(defaultContext);
// 国家名称映射
export const countryNames: Record<Language, Record<string, string>> = {
zh: {
'AF': '阿富汗',
'AO': '安哥拉',
'AL': '阿尔巴尼亚',
'AR': '阿根廷',
'AM': '亚美尼亚',
'AG': '安提瓜和巴布达',
'AU': '澳大利亚',
'AT': '奥地利',
'AZ': '阿塞拜疆',
'BI': '布隆迪',
'BE': '比利时',
'BJ': '贝宁',
'BF': '布基纳法索',
'BD': '孟加拉国',
'BG': '保加利亚',
'BH': '巴林',
'BS': '巴哈马',
'BA': '波斯尼亚和黑塞哥维那',
'BY': '白俄罗斯',
'BZ': '伯利兹',
'BO': '玻利维亚',
'BR': '巴西',
'BB': '巴巴多斯',
'BN': '文莱达鲁萨兰国',
'BT': '不丹',
'BW': '博茨瓦纳',
'CF': '中非共和国',
'CA': '加拿大',
'CH': '瑞士',
'CL': '智利',
'CN': '中国',
'CI': '科特迪瓦',
'CM': '喀麦隆',
'CD': '刚果(金)',
'CG': '刚果(布)',
'CO': '哥伦比亚',
'KM': '科摩罗',
'CV': '佛得角',
'CR': '哥斯达黎加',
'CY': '塞浦路斯',
'CZ': '捷克共和国',
'DE': '德国',
'DJ': '吉布提',
'DM': '多米尼克',
'DK': '丹麦',
'DO': '多米尼加共和国',
'DZ': '阿尔及利亚',
'EC': '厄瓜多尔',
'EG': '阿拉伯埃及共和国',
'ES': '西班牙',
'EE': '爱沙尼亚',
'ET': '埃塞俄比亚',
'FI': '芬兰',
'FJ': '斐济',
'FR': '法国',
'GA': '加蓬',
'GB': '英国',
'GE': '格鲁吉亚',
'GH': '加纳',
'GN': '几内亚',
'GM': '冈比亚',
'GW': '几内亚比绍共和国',
'GQ': '赤道几内亚',
'GR': '希腊',
'GD': '格林纳达',
'GT': '危地马拉',
'GY': '圭亚那',
'HK': '中国香港特别行政区',
'HN': '洪都拉斯',
'HR': '克罗地亚',
'HT': '海地',
'HU': '匈牙利',
'ID': '印度尼西亚',
'IN': '印度',
'IE': '爱尔兰',
'IR': '伊朗伊斯兰共和国',
'IQ': '伊拉克',
'IS': '冰岛',
'IL': '以色列',
'IT': '意大利',
'JM': '牙买加',
'JO': '约旦',
'JP': '日本',
'KZ': '哈萨克斯坦',
'KE': '肯尼亚',
'KG': '吉尔吉斯斯坦',
'KH': '柬埔寨',
'KI': '基里巴斯',
'KN': '圣基茨和尼维斯',
'KR': '大韩民国',
'LA': '老挝',
'LB': '黎巴嫩',
'LR': '利比里亚',
'LY': '利比亚',
'LC': '圣卢西亚',
'LK': '斯里兰卡',
'LS': '莱索托',
'LT': '立陶宛',
'LU': '卢森堡',
'LV': '拉脱维亚',
'MO': '中国澳门特别行政区',
'MA': '摩洛哥',
'MD': '摩尔多瓦',
'MG': '马达加斯加',
'MV': '马尔代夫',
'MX': '墨西哥',
'MK': '北马其顿',
'ML': '马里',
'MT': '马耳他',
'MM': '缅甸',
'ME': '黑山',
'MN': '蒙古',
'MZ': '莫桑比克',
'MR': '毛里塔尼亚',
'MU': '毛里求斯',
'MW': '马拉维',
'MY': '马来西亚',
'NA': '纳米比亚',
'NE': '尼日尔',
'NG': '尼日利亚',
'NI': '尼加拉瓜',
'NL': '荷兰',
'NO': '挪威',
'NP': '尼泊尔',
'NZ': '新西兰',
'PK': '巴基斯坦',
'PA': '巴拿马',
'PE': '秘鲁',
'PH': '菲律宾',
'PG': '巴布亚新几内亚',
'PL': '波兰',
'PR': '波多黎各',
'PT': '葡萄牙',
'PY': '巴拉圭',
'PS': '约旦河西岸和加沙',
'QA': '卡塔尔',
'RO': '罗马尼亚',
'RU': '俄罗斯联邦',
'RW': '卢旺达',
'SA': '沙特阿拉伯',
'SD': '苏丹',
'SN': '塞内加尔',
'SG': '新加坡',
'SB': '所罗门群岛',
'SL': '塞拉利昂',
'SV': '萨尔瓦多',
'SO': '索马里',
'RS': '塞尔维亚',
'ST': '圣多美和普林西比',
'SR': '苏里南',
'SK': '斯洛伐克共和国',
'SI': '斯洛文尼亚',
'SE': '瑞典',
'SZ': '斯威士兰',
'SC': '塞舌尔',
'TC': '特克斯科斯群岛',
'TD': '乍得',
'TG': '多哥',
'TH': '泰国',
'TJ': '塔吉克斯坦',
'TL': '东帝汶',
'TT': '特立尼达和多巴哥',
'TN': '突尼斯',
'TR': '土耳其',
'TV': '图瓦卢',
'TW': '台湾',
'TZ': '坦桑尼亚',
'UG': '乌干达',
'UA': '乌克兰',
'UY': '乌拉圭',
'US': '美国',
'UZ': '乌兹别克斯坦',
'VC': '圣文森特和格林纳丁斯',
'VN': '越南',
'VU': '瓦努阿图',
'XK': '科索沃',
'ZA': '南非',
'ZM': '赞比亚',
'ZW': '津巴布韦'
},
en: {
'AF': 'Afghanistan',
'AO': 'Angola',
'AL': 'Albania',
'AR': 'Argentina',
'AM': 'Armenia',
'AG': 'Antigua and Barbuda',
'AU': 'Australia',
'AT': 'Austria',
'AZ': 'Azerbaijan',
'BI': 'Burundi',
'BE': 'Belgium',
'BJ': 'Benin',
'BF': 'Burkina Faso',
'BD': 'Bangladesh',
'BG': 'Bulgaria',
'BH': 'Bahrain',
'BS': 'Bahamas',
'BA': 'Bosnia and Herzegovina',
'BY': 'Belarus',
'BZ': 'Belize',
'BO': 'Bolivia',
'BR': 'Brazil',
'BB': 'Barbados',
'BN': 'Brunei Darussalam',
'BT': 'Bhutan',
'BW': 'Botswana',
'CF': 'Central African Republic',
'CA': 'Canada',
'CH': 'Switzerland',
'CL': 'Chile',
'CN': 'China',
'CI': 'Côte d\'Ivoire',
'CM': 'Cameroon',
'CD': 'Congo (DRC)',
'CG': 'Congo (Republic)',
'CO': 'Colombia',
'KM': 'Comoros',
'CV': 'Cape Verde',
'CR': 'Costa Rica',
'CY': 'Cyprus',
'CZ': 'Czech Republic',
'DE': 'Germany',
'DJ': 'Djibouti',
'DM': 'Dominica',
'DK': 'Denmark',
'DO': 'Dominican Republic',
'DZ': 'Algeria',
'EC': 'Ecuador',
'EG': 'Egypt',
'ES': 'Spain',
'EE': 'Estonia',
'ET': 'Ethiopia',
'FI': 'Finland',
'FJ': 'Fiji',
'FR': 'France',
'GA': 'Gabon',
'GB': 'United Kingdom',
'GE': 'Georgia',
'GH': 'Ghana',
'GN': 'Guinea',
'GM': 'Gambia',
'GW': 'Guinea-Bissau',
'GQ': 'Equatorial Guinea',
'GR': 'Greece',
'GD': 'Grenada',
'GT': 'Guatemala',
'GY': 'Guyana',
'HK': 'Hong Kong SAR',
'HN': 'Honduras',
'HR': 'Croatia',
'HT': 'Haiti',
'HU': 'Hungary',
'ID': 'Indonesia',
'IN': 'India',
'IE': 'Ireland',
'IR': 'Iran',
'IQ': 'Iraq',
'IS': 'Iceland',
'IL': 'Israel',
'IT': 'Italy',
'JM': 'Jamaica',
'JO': 'Jordan',
'JP': 'Japan',
'KZ': 'Kazakhstan',
'KE': 'Kenya',
'KG': 'Kyrgyzstan',
'KH': 'Cambodia',
'KI': 'Kiribati',
'KN': 'St. Kitts and Nevis',
'KR': 'South Korea',
'LA': 'Laos',
'LB': 'Lebanon',
'LR': 'Liberia',
'LY': 'Libya',
'LC': 'St. Lucia',
'LK': 'Sri Lanka',
'LS': 'Lesotho',
'LT': 'Lithuania',
'LU': 'Luxembourg',
'LV': 'Latvia',
'MO': 'Macao SAR',
'MA': 'Morocco',
'MD': 'Moldova',
'MG': 'Madagascar',
'MV': 'Maldives',
'MX': 'Mexico',
'MK': 'North Macedonia',
'ML': 'Mali',
'MT': 'Malta',
'MM': 'Myanmar',
'ME': 'Montenegro',
'MN': 'Mongolia',
'MZ': 'Mozambique',
'MR': 'Mauritania',
'MU': 'Mauritius',
'MW': 'Malawi',
'MY': 'Malaysia',
'NA': 'Namibia',
'NE': 'Niger',
'NG': 'Nigeria',
'NI': 'Nicaragua',
'NL': 'Netherlands',
'NO': 'Norway',
'NP': 'Nepal',
'NZ': 'New Zealand',
'PK': 'Pakistan',
'PA': 'Panama',
'PE': 'Peru',
'PH': 'Philippines',
'PG': 'Papua New Guinea',
'PL': 'Poland',
'PR': 'Puerto Rico',
'PT': 'Portugal',
'PY': 'Paraguay',
'PS': 'West Bank and Gaza',
'QA': 'Qatar',
'RO': 'Romania',
'RU': 'Russia',
'RW': 'Rwanda',
'SA': 'Saudi Arabia',
'SD': 'Sudan',
'SN': 'Senegal',
'SG': 'Singapore',
'SB': 'Solomon Islands',
'SL': 'Sierra Leone',
'SV': 'El Salvador',
'SO': 'Somalia',
'RS': 'Serbia',
'ST': 'São Tomé and Principe',
'SR': 'Suriname',
'SK': 'Slovak Republic',
'SI': 'Slovenia',
'SE': 'Sweden',
'SZ': 'Eswatini',
'SC': 'Seychelles',
'TC': 'Turks and Caicos Islands',
'TD': 'Chad',
'TG': 'Togo',
'TH': 'Thailand',
'TJ': 'Tajikistan',
'TL': 'Timor-Leste',
'TT': 'Trinidad and Tobago',
'TN': 'Tunisia',
'TR': 'Turkey',
'TV': 'Tuvalu',
'TW': 'Taiwan',
'TZ': 'Tanzania',
'UG': 'Uganda',
'UA': 'Ukraine',
'UY': 'Uruguay',
'US': 'United States',
'UZ': 'Uzbekistan',
'VC': 'St. Vincent and the Grenadines',
'VN': 'Vietnam',
'VU': 'Vanuatu',
'XK': 'Kosovo',
'ZA': 'South Africa',
'ZM': 'Zambia',
'ZW': 'Zimbabwe'
},
ja: {
'AF': 'アフガニスタン',
'AL': 'アルバニア',
'DZ': 'アルジェリア',
'AO': 'アンゴラ',
'AR': 'アルゼンチン',
'AM': 'アルメニア',
'AU': 'オーストラリア',
'AT': 'オーストリア',
'AZ': 'アゼルバイジャン',
'BI': 'ブルンジ',
'BE': 'ベルギー',
'BJ': 'ベナン',
'BF': 'ブルキナファソ',
'BD': 'バングラデシュ',
'BG': 'ブルガリア',
'BH': 'バーレーン',
'BS': 'バハマ',
'BA': 'ボスニア・ヘルツェゴビナ',
'BY': 'ベラルーシ',
'BZ': 'ベリーズ',
'BO': 'ボリビア',
'BR': 'ブラジル',
'BB': 'バルバドス',
'BN': 'ブルネイ',
'BT': 'ブータン',
'BW': 'ボツワナ',
'CF': '中央アフリカ共和国',
'CA': 'カナダ',
'CH': 'スイス',
'CL': 'チリ',
'CN': '中国',
'CI': 'コートジボワール',
'CM': 'カメルーン',
'CD': 'コンゴ民主共和国',
'CG': 'コンゴ共和国',
'CO': 'コロンビア',
'KM': 'コモロ',
'CV': 'カーボベルデ',
'CR': 'コスタリカ',
'CY': 'キプロス',
'CZ': 'チェコ共和国',
'DE': 'ドイツ',
'DJ': 'ジブチ',
'DM': 'ドミニカ国',
'DK': 'デンマーク',
'DO': 'ドミニカ共和国',
'EC': 'エクアドル',
'EG': 'エジプト',
'ES': 'スペイン',
'EE': 'エストニア',
'ET': 'エチオピア',
'FI': 'フィンランド',
'FJ': 'フィジー',
'FR': 'フランス',
'GA': 'ガボン',
'GB': 'イギリス',
'GE': 'ジョージア',
'GH': 'ガーナ',
'GN': 'ギニア',
'GM': 'ガンビア',
'GW': 'ギニアビサウ',
'GQ': '赤道ギニア',
'GR': 'ギリシャ',
'GD': 'グレナダ',
'GT': 'グアテマラ',
'GY': 'ガイアナ',
'HK': '香港特別行政区',
'HN': 'ホンジュラス',
'HR': 'クロアチア',
'HT': 'ハイチ',
'HU': 'ハンガリー',
'ID': 'インドネシア',
'IN': 'インド',
'IE': 'アイルランド',
'IR': 'イラン',
'IQ': 'イラク',
'IS': 'アイスランド',
'IL': 'イスラエル',
'IT': 'イタリア',
'JM': 'ジャマイカ',
'JO': 'ヨルダン',
'JP': '日本',
'KZ': 'カザフスタン',
'KE': 'ケニア',
'KG': 'キルギス',
'KH': 'カンボジア',
'KI': 'キリバス',
'KN': 'セントクリストファー・ネイビス',
'KR': '韓国',
'LA': 'ラオス',
'LB': 'レバノン',
'LR': 'リベリア',
'LY': 'リビア',
'LC': 'セントルシア',
'LK': 'スリランカ',
'LS': 'レソト',
'LT': 'リトアニア',
'LU': 'ルクセンブルク',
'LV': 'ラトビア',
'MO': 'マカオ特別行政区',
'MA': 'モロッコ',
'MD': 'モルドバ',
'MG': 'マダガスカル',
'MV': 'モルディブ',
'MX': 'メキシコ',
'MK': '北マケドニア',
'ML': 'マリ',
'MT': 'マルタ',
'MM': 'ミャンマー',
'ME': 'モンテネグロ',
'MN': 'モンゴル',
'MZ': 'モザンビーク',
'MR': 'モーリタニア',
'MU': 'モーリシャス',
'MW': 'マラウイ',
'MY': 'マレーシア',
'NA': 'ナミビア',
'NE': 'ニジェール',
'NG': 'ナイジェリア',
'NI': 'ニカラグア',
'NL': 'オランダ',
'NO': 'ノルウェー',
'NP': 'ネパール',
'NZ': 'ニュージーランド',
'PK': 'パキスタン',
'PA': 'パナマ',
'PE': 'ペルー',
'PH': 'フィリピン',
'PG': 'パプアニューギニア',
'PL': 'ポーランド',
'PR': 'プエルトリコ',
'PT': 'ポルトガル',
'PY': 'パラグアイ',
'PS': 'パレスチナ',
'QA': 'カタール',
'RO': 'ルーマニア',
'RU': 'ロシア',
'RW': 'ルワンダ',
'SA': 'サウジアラビア',
'SD': 'スーダン',
'SN': 'セネガル',
'SG': 'シンガポール',
'SB': 'ソロモン諸島',
'SL': 'シエラレオネ',
'SV': 'エルサルバドル',
'SO': 'ソマリア',
'RS': 'セルビア',
'ST': 'サントメ・プリンシペ',
'SR': 'スリナム',
'SK': 'スロバキア',
'SI': 'スロベジア',
'SE': 'スウェーデン',
'SZ': 'エスワティニ',
'SC': 'セーシェル',
'TC': 'タークス・カイコス諸島',
'TD': 'チャド',
'TG': 'トーゴ',
'TH': 'タイ',
'TJ': 'タジキスタン',
'TL': '東ティモール',
'TT': 'トリニダード・トバゴ',
'TN': 'チュニジア',
'TR': 'トルコ',
'TV': 'ツバル',
'TW': '台湾',
'TZ': 'タンザニア',
'UG': 'ウガンダ',
'UA': 'ウクライナ',
'UY': 'ウルグアイ',
'US': 'アメリカ合衆国',
'UZ': 'ウズベキスタン',
'VC': 'セントビンセント・グレナディーン',
'VN': 'ベトナム',
'VU': 'バヌアツ',
'XK': 'コソボ',
'ZA': '南アフリカ',
'ZM': 'ザンビア',
'ZW': 'ジンバブエ'
}
};
// 翻译数据
const translations: Record<Language, Record<string, string>> = {
zh: {
@@ -646,47 +1192,47 @@ const translations: Record<Language, Record<string, string>> = {
'share_cbd_environment': '都心のオフィス環境は専門的かつ近代的で、ビジネスサービスやネットワーキングの機会へのアクセスが容易です。',
'share_factory_environment': '工場や屋外での勤務は独自の課題がありますが、耐久力と実践的な問題解決能力も育てています。',
'share_normal_environment': '職場環境は基本的な設備が整っており、生産的に仕事ができる条件が揃っています。',
'share_leadership_excellent': '上司に気に入られていることで優遇されていますが、それに伴う期待も高くなっています。',
'share_leadership_good': '理解のある上司はあなたの貢献を認め、必要なサポートを提供してくれます - これは職場での貴重な資産です。',
'share_leadership_normal': '上司との関係は事務的かつ機能的で、明確な期待と不必要な複雑さがない状態です。',
'share_leadership_strict': '厳しい管理の下で働くことは挑戦的ですが、専門性と細部への注意力を養うことができます。',
'share_leadership_bad': '上司との緊張関係は課題を生み出しますが、慎重なコミュニケーションと成果に焦点を当てることが重要です。',
'share_teamwork_excellent': '同僚との強い個人的なつながりは、仕事の満足度と効果を高めるサポートネットワークを作り出しています。',
'share_teamwork_good': '協力的なチーム環境では、相互サポートと効果的なコミュニケーションが促進され、日々の仕事がより快適で生産的になります。',
'share_teamwork_normal': '同僚との適度に専門的な関係を維持することで、仕事に集中しながらも必要なサポートを得ることができます。',
'share_teamwork_bad': '厳しいチームダイナミクスは適応性と自立性を必要とし、これが価値ある独立性と回復力を育てています。',
'share_leadership_excellent': "Being part of leadership's inner circle offers advantages in terms of opportunities and influence, though it comes with higher expectations.",
'share_leadership_good': 'Your supportive leadership recognizes your contributions and provides the guidance needed for success - a valuable workplace asset.',
'share_leadership_normal': 'Your professional relationship with leadership is straightforward and functional - clear expectations without unnecessary complications.',
'share_leadership_strict': 'Working under strict management can be challenging but often develops discipline and attention to detail that serve you well professionally.',
'share_leadership_bad': 'The tension with leadership creates challenges, requiring careful communication and focusing on deliverables rather than relationships.',
'share_teamwork_excellent': 'The strong personal connections with colleagues creates a supportive network that enhances both work satisfaction and effectiveness.',
'share_teamwork_good': 'Your collaborative team environment fosters mutual support and effective communication, making daily work more pleasant and productive.',
'share_teamwork_normal': 'Maintaining professional but not overly personal relationships with colleagues allows you to focus on your work while having adequate support.',
'share_teamwork_bad': 'The challenging team dynamics require adaptability and self-reliance, which can develop valuable independence and resilience.',
'share_workhours_balanced': 'バランスの取れた勤務スケジュールは、プライベートの時間を十分に確保でき、長期的なパフォーマンスの持続に貢献しています。',
'share_workhours_long': '長めの勤務時間は管理可能ですが、エネルギーを維持し燃え尽き症候群を防ぐための注意が必要です。',
'share_workhours_excessive': '勤務時間が非常に長く、持続不可能なレベルです。時間の経過とともに健康とパフォーマンスに影響を与える可能性があります。ワークロードの調整を検討してください。',
'share_rest_adequate': '十分な休憩時間は一日を通してエネルギーレベルと生産性を維持するのに役立っています。',
'share_rest_insufficient': '限られた休憩時間は、健康と集中力を維持するための短い動きの休憩を取り入れる必要性を示唆しています。',
'share_leave_abundant': '充実した休暇制度は、活力回復と個人的な活動のための十分な時間を提供し、持続的なモチベーションに不可欠です。',
'share_leave_limited': '休暇時間が限られている場合、その回復効果を最大化するための戦略的な計画が重要です。',
'share_workhours_balanced': 'Your balanced work schedule allows sufficient time for personal life, contributing to sustainable long-term performance.',
'share_workhours_long': 'Your extended work hours are manageable but require attention to maintaining energy and preventing burnout.',
'share_workhours_excessive': 'Your work hours are unsustainably long and may impact wellbeing and performance over time. Consider discussing workload adjustments.',
'share_rest_adequate': 'Your generous break time helps maintain energy levels and productivity throughout the workday.',
'share_rest_insufficient': 'Your limited break time suggests a need for incorporating short movement breaks to maintain health and focus.',
'share_leave_abundant': 'Your generous leave allowance provides ample time for rejuvenation and personal pursuits - essential for sustained motivation.',
'share_leave_limited': 'With limited leave time, strategic planning of your days off becomes important for maximizing their restorative benefit.',
'share_phd_comment': '博士号は専門的なポジションへの扉を開き、高度な研究と分析能力を示しています。',
'share_masters_comment': '修士号は高度な知識と専門性を示し、今日の競争的な雇用市場で依然として価値があります。',
'share_bachelor_comment': '学士号は堅実な基盤を提供し、実践的な経験と組み合わせることで多様なキャリア機会を得られます。',
'share_below_bachelor_comment': '学士未満の学歴は一部の分野で課題となる場合がありますが、実践的なスキルと経験も同様に貴重な資産となります。',
'share_fresh_graduate_comment': '新卒として、あなたの新鮮な視点と最新の知識は資産であり、成長と学習の無限の可能性があります。',
'share_experienced_comment': '豊富な職務経験は、効果性と自信を高める貴重なコンテキストと判断力を提供します。',
'share_mid_career_comment': '数年の経験により、業界と個人の強みの両方を理解し、戦略的なキャリア開発の準備が整っています。',
'share_government_job_comment': '公的部門での雇用の安定性はキャリアの不確実性を軽減し、より自信を持った長期計画を可能にします。',
'share_private_job_comment': '民間部門での雇用にはある程度の不確実性がありますが、迅速な成長と報酬の機会を提供することが多いです。',
'share_phd_comment': 'Your doctoral qualification opens doors to specialized positions and demonstrates advanced research and analytical capabilities.',
'share_masters_comment': "Your master's degree demonstrates advanced knowledge and commitment that remains valuable in today's competitive job market.",
'share_bachelor_comment': "Your bachelor's degree provides a solid foundation that, combined with practical experience, enables diverse career opportunities.",
'share_below_bachelor_comment': "While formal education below bachelor's level may present challenges in some fields, practical skills and experience can be equally valuable assets.",
'share_fresh_graduate_comment': 'As a recent graduate, your fresh perspective and current knowledge are assets, balanced by the unlimited potential for growth and learning.',
'share_experienced_comment': 'Your substantial work experience provides valuable context and judgment that enhance your effectiveness and confidence.',
'share_mid_career_comment': 'With several years of experience, you understand both your industry and personal strengths, positioning you for strategic career development.',
'share_government_job_comment': 'The stability of public sector employment reduces career uncertainty, allowing more confident long-term planning.',
'share_private_job_comment': 'While private sector employment carries some uncertainty, it often provides accelerated growth and compensation opportunities.',
'share_salary_high_cny': '日給は競争力があり、基本的な必需品と裁量支出の両方に対する財政的安全性と柔軟性を提供しています。',
'share_salary_medium_cny': '給与は基本的なニーズを快適に満たしていますが、最適な財政状態のためには計画的な予算管理が必要です。',
'share_salary_low_cny': '現在の給与水準は慎重な財務管理を必要とし、収入増加の機会を模索すべきでしょう。',
'share_salary_high_foreign': '日給は競争力があり、基本的な必需品と裁量支出の両方に対する財政的安全性と柔軟性を提供しています。',
'share_salary_medium_foreign': '給与は基本的なニーズを快適に満たしていますが、最適な財政状態のためには計画的な予算管理が必要です。',
'share_salary_low_foreign': '現在の給与水準は慎重な財務管理を必要とし、収入増加の機会を模索すべきでしょう。',
'share_high_cost_city': '生活費の高い地域では、給与の価値を最大化するための慎重な財務計画が役立ちます。',
'share_low_cost_city': '生活費の低い地域では、給与のより大きな購買力と貯蓄の可能性が得られます。',
'share_salary_high_cny': 'Your daily compensation is competitive, providing financial security and flexibility for both necessities and discretionary spending.',
'share_salary_medium_cny': 'Your compensation meets basic needs comfortably but requires thoughtful budgeting for optimal financial health.',
'share_salary_low_cny': 'Your current compensation level necessitates careful financial management while you explore opportunities for income growth.',
'share_salary_high_foreign': 'Your daily compensation is competitive, providing financial security and flexibility for both necessities and discretionary spending.',
'share_salary_medium_foreign': 'Your compensation meets basic needs comfortably but requires thoughtful budgeting for optimal financial health.',
'share_salary_low_foreign': 'Your current compensation level necessitates careful financial management while you explore opportunities for income growth.',
'share_high_cost_city': 'In a high-cost location, careful financial planning helps maximize the value of your compensation.',
'share_low_cost_city': 'In a lower-cost area, your compensation provides enhanced purchasing power and potential for savings.',
'share_value_low': '現在のポジションは限られた価値を示していますが、将来の成長に必要な経験を提供するかもしれません。次のキャリア展開を準備しながら、あらゆる側面から学びを得てください。',
'share_value_medium': 'あなたの仕事は、強みと改善の余地の両方を持つバランスの取れた価値を提供しています。ポジティブな側面を活かしながら、課題に対処する戦略を開発してください。',
'share_value_high': '高価値のポジションを見つけました。維持し発展させる価値があります。あなたの強みを継続的に伸ばし、この役割がもたらす満足感を大切にしてください。',
'share_summary_advice': '全体的な推奨事項',
'share_value_low': 'While the current position shows limited value, it may provide necessary experience for future growth. Extract learning from every aspect while preparing for your next career move.',
'share_value_medium': 'Your job offers balanced value with both strengths and areas for improvement. Focus on leveraging the positive aspects while developing strategies to address the challenges.',
'share_value_high': "You've found a high-value position worth maintaining and developing. Continue building on your strengths and appreciate the satisfaction this role provides.",
'share_summary_advice': 'Overall Recommendation',
// 評価
'rating_enter_salary': '給与を入力してください',

View File

@@ -5,550 +5,189 @@ import { Wallet, Github, FileText, Book, Star } from 'lucide-react'; // 添加Bo
import Link from 'next/link'; // 导入Link组件用于导航
import { useLanguage } from './LanguageContext';
import { LanguageSwitcher } from './LanguageSwitcher';
import { countryNames } from './LanguageContext';
// 定义PPP转换因子映射表
const pppFactors: Record<string, { name: string, factor: number }> = {
'AF': { name: '阿富汗', factor: 18.71 },
'AO': { name: '安哥拉', factor: 167.66 },
'AL': { name: '阿尔巴尼亚', factor: 41.01 },
'AR': { name: '阿根廷', factor: 28.67 },
'AM': { name: '亚美尼亚', factor: 157.09 },
'AG': { name: '安提瓜和巴布达', factor: 2.06 },
'AU': { name: '澳大利亚', factor: 1.47 },
'AT': { name: '奥地利', factor: 0.76 },
'AZ': { name: '阿塞拜疆', factor: 0.50 },
'BI': { name: '布隆迪', factor: 680.41 },
'BE': { name: '比利时', factor: 0.75 },
'BJ': { name: '贝宁', factor: 211.97 },
'BF': { name: '布基纳法索', factor: 209.84 },
'BD': { name: '孟加拉国', factor: 32.81 },
'BG': { name: '保加利亚', factor: 0.70 },
'BH': { name: '巴林', factor: 0.18 },
'BS': { name: '巴哈马', factor: 0.88 },
'BA': { name: '波斯尼亚和黑塞哥维那', factor: 0.66 },
'BY': { name: '白俄罗斯', factor: 0.77 },
'BZ': { name: '伯利兹', factor: 1.37 },
'BO': { name: '玻利维亚', factor: 2.60 },
'BR': { name: '巴西', factor: 2.36 },
'BB': { name: '巴巴多斯', factor: 2.24 },
'BN': { name: '文莱达鲁萨兰国', factor: 0.58 },
'BT': { name: '不丹', factor: 20.11 },
'BW': { name: '博茨瓦纳', factor: 4.54 },
'CF': { name: '中非共和国', factor: 280.19 },
'CA': { name: '加拿大', factor: 1.21 },
'CH': { name: '瑞士', factor: 1.14 },
'CL': { name: '智利', factor: 418.43 },
'CN': { name: '中国', factor: 4.19 },
'CI': { name: '科特迪瓦', factor: 245.25 },
'CM': { name: '喀麦隆', factor: 228.75 },
'CD': { name: '刚果(金)', factor: 911.27 },
'CG': { name: '刚果(布)', factor: 312.04 },
'CO': { name: '哥伦比亚', factor: 1352.79 },
'KM': { name: '科摩罗', factor: 182.34 },
'CV': { name: '佛得角', factor: 46.51 },
'CR': { name: '哥斯达黎加', factor: 335.86 },
'CY': { name: '塞浦路斯', factor: 0.61 },
'CZ': { name: '捷克共和国', factor: 12.66 },
'DE': { name: '德国', factor: 0.75 },
'DJ': { name: '吉布提', factor: 105.29 },
'DM': { name: '多米尼克', factor: 1.69 },
'DK': { name: '丹麦', factor: 6.60 },
'DO': { name: '多米尼加共和国', factor: 22.90 },
'DZ': { name: '阿尔及利亚', factor: 37.24 },
'EC': { name: '厄瓜多尔', factor: 0.51 },
'EG': { name: '阿拉伯埃及共和国', factor: 4.51 },
'ES': { name: '西班牙', factor: 0.62 },
'EE': { name: '爱沙尼亚', factor: 0.53 },
'ET': { name: '埃塞俄比亚', factor: 12.11 },
'FI': { name: '芬兰', factor: 0.84 },
'FJ': { name: '斐济', factor: 0.91 },
'FR': { name: '法国', factor: 0.73 },
'GA': { name: '加蓬', factor: 265.46 },
'GB': { name: '英国', factor: 0.70 },
'GE': { name: '格鲁吉亚', factor: 0.90 },
'GH': { name: '加纳', factor: 2.33 },
'GN': { name: '几内亚', factor: 4053.64 },
'GM': { name: '冈比亚', factor: 17.79 },
'GW': { name: '几内亚比绍共和国', factor: 214.86 },
'GQ': { name: '赤道几内亚', factor: 229.16 },
'GR': { name: '希腊', factor: 0.54 },
'GD': { name: '格林纳达', factor: 1.64 },
'GT': { name: '危地马拉', factor: 4.01 },
'GY': { name: '圭亚那', factor: 73.60 },
'HK': { name: '中国香港特别行政区', factor: 6.07 },
'HN': { name: '洪都拉斯', factor: 10.91 },
'HR': { name: '克罗地亚', factor: 3.21 },
'HT': { name: '海地', factor: 40.20 },
'HU': { name: '匈牙利', factor: 148.01 },
'ID': { name: '印度尼西亚', factor: 4673.65 },
'IN': { name: '印度', factor: 21.99 },
'IE': { name: '爱尔兰', factor: 0.78 },
'IR': { name: '伊朗伊斯兰共和国', factor: 30007.63 },
'IQ': { name: '伊拉克', factor: 507.58 },
'IS': { name: '冰岛', factor: 145.34 },
'IL': { name: '以色列', factor: 3.59 },
'IT': { name: '意大利', factor: 0.66 },
'JM': { name: '牙买加', factor: 72.03 },
'JO': { name: '约旦', factor: 0.29 },
'JP': { name: '日本', factor: 102.84 },
'KZ': { name: '哈萨克斯坦', factor: 139.91 },
'KE': { name: '肯尼亚', factor: 43.95 },
'KG': { name: '吉尔吉斯斯坦', factor: 18.28 },
'KH': { name: '柬埔寨', factor: 1400.09 },
'KI': { name: '基里巴斯', factor: 1.00 },
'KN': { name: '圣基茨和尼维斯', factor: 1.92 },
'KR': { name: '大韩民国', factor: 861.82 },
'LA': { name: '老挝', factor: 2889.36 },
'LB': { name: '黎巴嫩', factor: 1414.91 },
'LR': { name: '利比里亚', factor: 0.41 },
'LY': { name: '利比亚', factor: 0.48 },
'LC': { name: '圣卢西亚', factor: 1.93 },
'LK': { name: '斯里兰卡', factor: 51.65 },
'LS': { name: '莱索托', factor: 5.90 },
'LT': { name: '立陶宛', factor: 0.45 },
'LU': { name: '卢森堡', factor: 0.86 },
'LV': { name: '拉脱维亚', factor: 0.48 },
'MO': { name: '中国澳门特别行政区', factor: 5.18 },
'MA': { name: '摩洛哥', factor: 3.92 },
'MD': { name: '摩尔多瓦', factor: 6.06 },
'MG': { name: '马达加斯加', factor: 1178.10 },
'MV': { name: '马尔代夫', factor: 8.35 },
'MX': { name: '墨西哥', factor: 9.52 },
'MK': { name: '北马其顿', factor: 18.83 },
'ML': { name: '马里', factor: 211.41 },
'MT': { name: '马耳他', factor: 0.57 },
'MM': { name: '缅甸', factor: 417.35 },
'ME': { name: '黑山', factor: 0.33 },
'MN': { name: '蒙古', factor: 931.67 },
'MZ': { name: '莫桑比克', factor: 24.05 },
'MR': { name: '毛里塔尼亚', factor: 12.01 },
'MU': { name: '毛里求斯', factor: 16.52 },
'MW': { name: '马拉维', factor: 298.82 },
'MY': { name: '马来西亚', factor: 1.57 },
'NA': { name: '纳米比亚', factor: 7.40 },
'NE': { name: '尼日尔', factor: 257.60 },
'NG': { name: '尼日利亚', factor: 144.27 },
'NI': { name: '尼加拉瓜', factor: 11.75 },
'NL': { name: '荷兰', factor: 0.77 },
'NO': { name: '挪威', factor: 10.03 },
'NP': { name: '尼泊尔', factor: 33.52 },
'NZ': { name: '新西兰', factor: 1.45 },
'PK': { name: '巴基斯坦', factor: 38.74 },
'PA': { name: '巴拿马', factor: 0.46 },
'PE': { name: '秘鲁', factor: 1.80 },
'PH': { name: '菲律宾', factor: 19.51 },
'PG': { name: '巴布亚新几内亚', factor: 2.11 },
'PL': { name: '波兰', factor: 1.78 },
'PR': { name: '波多黎各', factor: 0.92 },
'PT': { name: '葡萄牙', factor: 0.57 },
'PY': { name: '巴拉圭', factor: 2575.54 },
'PS': { name: '约旦河西岸和加沙', factor: 0.57 },
'QA': { name: '卡塔尔', factor: 2.06 },
'RO': { name: '罗马尼亚', factor: 1.71 },
'RU': { name: '俄罗斯联邦', factor: 25.88 },
'RW': { name: '卢旺达', factor: 339.88 },
'SA': { name: '沙特阿拉伯', factor: 1.61 },
'SD': { name: '苏丹', factor: 21.85 },
'SN': { name: '塞内加尔', factor: 245.98 },
'SG': { name: '新加坡', factor: 0.84 },
'SB': { name: '所罗门群岛', factor: 7.08 },
'SL': { name: '塞拉利昂', factor: 2739.26 },
'SV': { name: '萨尔瓦多', factor: 0.45 },
'SO': { name: '索马里', factor: 9107.78 },
'RS': { name: '塞尔维亚', factor: 41.13 },
'ST': { name: '圣多美和普林西比', factor: 10.94 },
'SR': { name: '苏里南', factor: 3.55 },
'SK': { name: '斯洛伐克共和国', factor: 0.53 },
'SI': { name: '斯洛文尼亚', factor: 0.56 },
'SE': { name: '瑞典', factor: 8.77 },
'SZ': { name: '斯威士兰', factor: 6.36 },
'SC': { name: '塞舌尔', factor: 7.82 },
'TC': { name: '特克斯科斯群岛', factor: 1.07 },
'TD': { name: '乍得', factor: 220.58 },
'TG': { name: '多哥', factor: 236.83 },
'TH': { name: '泰国', factor: 12.34 },
'TJ': { name: '塔吉克斯坦', factor: 2.30 },
'TL': { name: '东帝汶', factor: 0.41 },
'TT': { name: '特立尼达和多巴哥', factor: 4.15 },
'TN': { name: '突尼斯', factor: 0.91 },
'TR': { name: '土耳其', factor: 2.13 },
'TV': { name: '图瓦卢', factor: 1.29 },
'TZ': { name: '坦桑尼亚', factor: 888.32 },
'UG': { name: '乌干达', factor: 1321.35 },
'UA': { name: '乌克兰', factor: 7.69 },
'UY': { name: '乌拉圭', factor: 28.45 },
'US': { name: '美国', factor: 1.00 },
'UZ': { name: '乌兹别克斯坦', factor: 2297.17 },
'VC': { name: '圣文森特和格林纳丁斯', factor: 1.54 },
'VN': { name: '越南', factor: 7473.67 },
'VU': { name: '瓦努阿图', factor: 110.17 },
'XK': { name: '科索沃', factor: 0.33 },
'ZA': { name: '南非', factor: 6.93 },
'ZM': { name: '赞比亚', factor: 5.59 },
'ZW': { name: '津巴布韦', factor: 24.98 }
};
// 为英文界面添加国家名称
const countryNamesEn: Record<string, string> = {
'AF': 'Afghanistan',
'AO': 'Angola',
'AL': 'Albania',
'AR': 'Argentina',
'AM': 'Armenia',
'AG': 'Antigua and Barbuda',
'AU': 'Australia',
'AT': 'Austria',
'AZ': 'Azerbaijan',
'BI': 'Burundi',
'BE': 'Belgium',
'BJ': 'Benin',
'BF': 'Burkina Faso',
'BD': 'Bangladesh',
'BG': 'Bulgaria',
'BH': 'Bahrain',
'BS': 'Bahamas',
'BA': 'Bosnia and Herzegovina',
'BY': 'Belarus',
'BZ': 'Belize',
'BO': 'Bolivia',
'BR': 'Brazil',
'BB': 'Barbados',
'BN': 'Brunei Darussalam',
'BT': 'Bhutan',
'BW': 'Botswana',
'CF': 'Central African Republic',
'CA': 'Canada',
'CH': 'Switzerland',
'CL': 'Chile',
'CN': 'China',
'CI': 'Côte d\'Ivoire',
'CM': 'Cameroon',
'CD': 'Congo (DRC)',
'CG': 'Congo (Republic)',
'CO': 'Colombia',
'KM': 'Comoros',
'CV': 'Cape Verde',
'CR': 'Costa Rica',
'CY': 'Cyprus',
'CZ': 'Czech Republic',
'DE': 'Germany',
'DJ': 'Djibouti',
'DM': 'Dominica',
'DK': 'Denmark',
'DO': 'Dominican Republic',
'DZ': 'Algeria',
'EC': 'Ecuador',
'EG': 'Egypt',
'ES': 'Spain',
'EE': 'Estonia',
'ET': 'Ethiopia',
'FI': 'Finland',
'FJ': 'Fiji',
'FR': 'France',
'GA': 'Gabon',
'GB': 'United Kingdom',
'GE': 'Georgia',
'GH': 'Ghana',
'GN': 'Guinea',
'GM': 'Gambia',
'GW': 'Guinea-Bissau',
'GQ': 'Equatorial Guinea',
'GR': 'Greece',
'GD': 'Grenada',
'GT': 'Guatemala',
'GY': 'Guyana',
'HK': 'Hong Kong SAR',
'HN': 'Honduras',
'HR': 'Croatia',
'HT': 'Haiti',
'HU': 'Hungary',
'ID': 'Indonesia',
'IN': 'India',
'IE': 'Ireland',
'IR': 'Iran',
'IQ': 'Iraq',
'IS': 'Iceland',
'IL': 'Israel',
'IT': 'Italy',
'JM': 'Jamaica',
'JO': 'Jordan',
'JP': 'Japan',
'KZ': 'Kazakhstan',
'KE': 'Kenya',
'KG': 'Kyrgyzstan',
'KH': 'Cambodia',
'KI': 'Kiribati',
'KN': 'St. Kitts and Nevis',
'KR': 'South Korea',
'LA': 'Laos',
'LB': 'Lebanon',
'LR': 'Liberia',
'LY': 'Libya',
'LC': 'St. Lucia',
'LK': 'Sri Lanka',
'LS': 'Lesotho',
'LT': 'Lithuania',
'LU': 'Luxembourg',
'LV': 'Latvia',
'MO': 'Macao SAR',
'MA': 'Morocco',
'MD': 'Moldova',
'MG': 'Madagascar',
'MV': 'Maldives',
'MX': 'Mexico',
'MK': 'North Macedonia',
'ML': 'Mali',
'MT': 'Malta',
'MM': 'Myanmar',
'ME': 'Montenegro',
'MN': 'Mongolia',
'MZ': 'Mozambique',
'MR': 'Mauritania',
'MU': 'Mauritius',
'MW': 'Malawi',
'MY': 'Malaysia',
'NA': 'Namibia',
'NE': 'Niger',
'NG': 'Nigeria',
'NI': 'Nicaragua',
'NL': 'Netherlands',
'NO': 'Norway',
'NP': 'Nepal',
'NZ': 'New Zealand',
'PK': 'Pakistan',
'PA': 'Panama',
'PE': 'Peru',
'PH': 'Philippines',
'PG': 'Papua New Guinea',
'PL': 'Poland',
'PR': 'Puerto Rico',
'PT': 'Portugal',
'PY': 'Paraguay',
'PS': 'West Bank and Gaza',
'QA': 'Qatar',
'RO': 'Romania',
'RU': 'Russia',
'RW': 'Rwanda',
'SA': 'Saudi Arabia',
'SD': 'Sudan',
'SN': 'Senegal',
'SG': 'Singapore',
'SB': 'Solomon Islands',
'SL': 'Sierra Leone',
'SV': 'El Salvador',
'SO': 'Somalia',
'RS': 'Serbia',
'ST': 'São Tomé and Principe',
'SR': 'Suriname',
'SK': 'Slovak Republic',
'SI': 'Slovenia',
'SE': 'Sweden',
'SZ': 'Eswatini',
'SC': 'Seychelles',
'TC': 'Turks and Caicos Islands',
'TD': 'Chad',
'TG': 'Togo',
'TH': 'Thailand',
'TJ': 'Tajikistan',
'TL': 'Timor-Leste',
'TT': 'Trinidad and Tobago',
'TN': 'Tunisia',
'TR': 'Turkey',
'TV': 'Tuvalu',
'TZ': 'Tanzania',
'UG': 'Uganda',
'UA': 'Ukraine',
'UY': 'Uruguay',
'US': 'United States',
'UZ': 'Uzbekistan',
'VC': 'St. Vincent and the Grenadines',
'VN': 'Vietnam',
'VU': 'Vanuatu',
'XK': 'Kosovo',
'ZA': 'South Africa',
'ZM': 'Zambia',
'ZW': 'Zimbabwe'
};
// 为日语界面添加国家名称
const countryNamesJp: Record<string, string> = {
'AF': 'アフガニスタン',
'AL': 'アルバニア',
'DZ': 'アルジェリア',
'AO': 'アンゴラ',
'AR': 'アルゼンチン',
'AM': 'アルメニア',
'AU': 'オーストラリア',
'AT': 'オーストリア',
'AZ': 'アゼルバイジャン',
'BI': 'ブルンジ',
'BE': 'ベルギー',
'BJ': 'ベナン',
'BF': 'ブルキナファソ',
'BD': 'バングラデシュ',
'BG': 'ブルガリア',
'BH': 'バーレーン',
'BS': 'バハマ',
'BA': 'ボスニア・ヘルツェゴビナ',
'BY': 'ベラルーシ',
'BZ': 'ベリーズ',
'BO': 'ボリビア',
'BR': 'ブラジル',
'BB': 'バルバドス',
'BN': 'ブルネイ',
'BT': 'ブータン',
'BW': 'ボツワナ',
'CF': '中央アフリカ共和国',
'CA': 'カナダ',
'CH': 'スイス',
'CL': 'チリ',
'CN': '中国',
'CI': 'コートジボワール',
'CM': 'カメルーン',
'CD': 'コンゴ民主共和国',
'CG': 'コンゴ共和国',
'CO': 'コロンビア',
'KM': 'コモロ',
'CV': 'カーボベルデ',
'CR': 'コスタリカ',
'CY': 'キプロス',
'CZ': 'チェコ共和国',
'DE': 'ドイツ',
'DJ': 'ジブチ',
'DM': 'ドミニカ国',
'DK': 'デンマーク',
'DO': 'ドミニカ共和国',
'EC': 'エクアドル',
'EG': 'エジプト',
'ES': 'スペイン',
'EE': 'エストニア',
'ET': 'エチオピア',
'FI': 'フィンランド',
'FJ': 'フィジー',
'FR': 'フランス',
'GA': 'ガボン',
'GB': 'イギリス',
'GE': 'ジョージア',
'GH': 'ガーナ',
'GN': 'ギニア',
'GM': 'ガンビア',
'GW': 'ギニアビサウ',
'GQ': '赤道ギニア',
'GR': 'ギリシャ',
'GD': 'グレナダ',
'GT': 'グアテマラ',
'GY': 'ガイアナ',
'HK': '香港特別行政区',
'HN': 'ホンジュラス',
'HR': 'クロアチア',
'HT': 'ハイチ',
'HU': 'ハンガリー',
'ID': 'インドネシア',
'IN': 'インド',
'IE': 'アイルランド',
'IR': 'イラン',
'IQ': 'イラク',
'IS': 'アイスランド',
'IL': 'イスラエル',
'IT': 'イタリア',
'JM': 'ジャマイカ',
'JO': 'ヨルダン',
'JP': '日本',
'KZ': 'カザフスタン',
'KE': 'ケニア',
'KG': 'キルギス',
'KH': 'カンボジア',
'KI': 'キリバス',
'KN': 'セントクリストファー・ネイビス',
'KR': '韓国',
'LA': 'ラオス',
'LB': 'レバノン',
'LR': 'リベリア',
'LY': 'リビア',
'LC': 'セントルシア',
'LK': 'スリランカ',
'LS': 'レソト',
'LT': 'リトアニア',
'LU': 'ルクセンブルク',
'LV': 'ラトビア',
'MO': 'マカオ特別行政区',
'MA': 'モロッコ',
'MD': 'モルドバ',
'MG': 'マダガスカル',
'MV': 'モルディブ',
'MX': 'メキシコ',
'MK': '北マケドニア',
'ML': 'マリ',
'MT': 'マルタ',
'MM': 'ミャンマー',
'ME': 'モンテネグロ',
'MN': 'モンゴル',
'MZ': 'モザンビーク',
'MR': 'モーリタニア',
'MU': 'モーリシャス',
'MW': 'マラウイ',
'MY': 'マレーシア',
'NA': 'ナミビア',
'NE': 'ニジェール',
'NG': 'ナイジェリア',
'NI': 'ニカラグア',
'NL': 'オランダ',
'NO': 'ノルウェー',
'NP': 'ネパール',
'NZ': 'ニュージーランド',
'PK': 'パキスタン',
'PA': 'パナマ',
'PE': 'ペルー',
'PH': 'フィリピン',
'PG': 'パプアニューギニア',
'PL': 'ポーランド',
'PR': 'プエルトリコ',
'PT': 'ポルトガル',
'PY': 'パラグアイ',
'PS': 'パレスチナ',
'QA': 'カタール',
'RO': 'ルーマニア',
'RU': 'ロシア',
'RW': 'ルワンダ',
'SA': 'サウジアラビア',
'SD': 'スーダン',
'SN': 'セネガル',
'SG': 'シンガポール',
'SB': 'ソロモン諸島',
'SL': 'シエラレオネ',
'SV': 'エルサルバドル',
'SO': 'ソマリア',
'RS': 'セルビア',
'ST': 'サントメ・プリンシペ',
'SR': 'スリナム',
'SK': 'スロバキア',
'SI': 'スロベニア',
'SE': 'スウェーデン',
'SZ': 'エスワティニ',
'SC': 'セーシェル',
'TC': 'タークス・カイコス諸島',
'TD': 'チャド',
'TG': 'トーゴ',
'TH': 'タイ',
'TJ': 'タジキスタン',
'TL': '東ティモール',
'TT': 'トリニダード・トバゴ',
'TN': 'チュニジア',
'TR': 'トルコ',
'TV': 'ツバル',
'TZ': 'タンザニア',
'UG': 'ウガンダ',
'UA': 'ウクライナ',
'UY': 'ウルグアイ',
'US': 'アメリカ合衆国',
'UZ': 'ウズベキスタン',
'VC': 'セントビンセント・グレナディーン',
'VN': 'ベトナム',
'VU': 'バヌアツ',
'XK': 'コソボ',
'ZA': '南アフリカ',
'ZM': 'ザンビア',
'ZW': 'ジンバブエ'
const pppFactors: Record<string, number> = {
'AF': 18.71,
'AO': 167.66,
'AL': 41.01,
'AR': 28.67,
'AM': 157.09,
'AG': 2.06,
'AU': 1.47,
'AT': 0.76,
'AZ': 0.50,
'BI': 680.41,
'BE': 0.75,
'BJ': 211.97,
'BF': 209.84,
'BD': 32.81,
'BG': 0.70,
'BH': 0.18,
'BS': 0.88,
'BA': 0.66,
'BY': 0.77,
'BZ': 1.37,
'BO': 2.60,
'BR': 2.36,
'BB': 2.24,
'BN': 0.58,
'BT': 20.11,
'BW': 4.54,
'CF': 280.19,
'CA': 1.21,
'CH': 1.14,
'CL': 418.43,
'CN': 4.19,
'CI': 245.25,
'CM': 228.75,
'CD': 911.27,
'CG': 312.04,
'CO': 1352.79,
'KM': 182.34,
'CV': 46.51,
'CR': 335.86,
'CY': 0.61,
'CZ': 12.66,
'DE': 0.75,
'DJ': 105.29,
'DM': 1.69,
'DK': 6.60,
'DO': 22.90,
'DZ': 37.24,
'EC': 0.51,
'EG': 4.51,
'ES': 0.62,
'EE': 0.53,
'ET': 12.11,
'FI': 0.84,
'FJ': 0.91,
'FR': 0.73,
'GA': 265.46,
'GB': 0.70,
'GE': 0.90,
'GH': 2.33,
'GN': 4053.64,
'GM': 17.79,
'GW': 214.86,
'GQ': 229.16,
'GR': 0.54,
'GD': 1.64,
'GT': 4.01,
'GY': 73.60,
'HK': 6.07,
'HN': 10.91,
'HR': 3.21,
'HT': 40.20,
'HU': 148.01,
'ID': 4673.65,
'IN': 21.99,
'IE': 0.78,
'IR': 30007.63,
'IQ': 507.58,
'IS': 145.34,
'IL': 3.59,
'IT': 0.66,
'JM': 72.03,
'JO': 0.29,
'JP': 102.84,
'KZ': 139.91,
'KE': 43.95,
'KG': 18.28,
'KH': 1400.09,
'KI': 1.00,
'KN': 1.92,
'KR': 861.82,
'LA': 2889.36,
'LB': 1414.91,
'LR': 0.41,
'LY': 0.48,
'LC': 1.93,
'LK': 51.65,
'LS': 5.90,
'LT': 0.45,
'LU': 0.86,
'LV': 0.48,
'MO': 5.18,
'MA': 3.92,
'MD': 6.06,
'MG': 1178.10,
'MV': 8.35,
'MX': 9.52,
'MK': 18.83,
'ML': 211.41,
'MT': 0.57,
'MM': 417.35,
'ME': 0.33,
'MN': 931.67,
'MZ': 24.05,
'MR': 12.01,
'MU': 16.52,
'MW': 298.82,
'MY': 1.57,
'NA': 7.40,
'NE': 257.60,
'NG': 144.27,
'NI': 11.75,
'NL': 0.77,
'NO': 10.03,
'NP': 33.52,
'NZ': 1.45,
'PK': 38.74,
'PA': 0.46,
'PE': 1.80,
'PH': 19.51,
'PG': 2.11,
'PL': 1.78,
'PR': 0.92,
'PT': 0.57,
'PY': 2575.54,
'PS': 0.57,
'QA': 2.06,
'RO': 1.71,
'RU': 25.88,
'RW': 339.88,
'SA': 1.61,
'SD': 21.85,
'SN': 245.98,
'SG': 0.84,
'SB': 7.08,
'SL': 2739.26,
'SV': 0.45,
'SO': 9107.78,
'RS': 41.13,
'ST': 10.94,
'SR': 3.55,
'SK': 0.53,
'SI': 0.56,
'SE': 8.77,
'SZ': 6.36,
'SC': 7.82,
'TC': 1.07,
'TD': 220.58,
'TG': 236.83,
'TH': 12.34,
'TJ': 2.30,
'TL': 0.41,
'TT': 4.15,
'TN': 0.91,
'TR': 2.13,
'TV': 1.29,
'TW': 13.85,
'TZ': 888.32,
'UG': 1321.35,
'UA': 7.69,
'UY': 28.45,
'US': 1.00,
'UZ': 2297.17,
'VC': 1.54,
'VN': 7473.67,
'VU': 110.17,
'XK': 0.33,
'ZA': 6.93,
'ZM': 5.59,
'ZW': 24.98
};
// 添加各国货币符号映射
@@ -845,7 +484,7 @@ const SalaryCalculator = () => {
// 应用PPP转换因子标准化薪资
// 如果选择了非中国地区使用选定国家的PPP否则使用中国默认值4.19
const isNonChina = selectedCountry !== 'CN';
const pppFactor = isNonChina ? pppFactors[selectedCountry]?.factor || 4.19 : 4.19;
const pppFactor = isNonChina ? pppFactors[selectedCountry] || 4.19 : 4.19;
const standardizedSalary = Number(formData.salary) * (4.19 / pppFactor);
return standardizedSalary / workingDays; // 除 0 不管, Infinity(爽到爆炸)!
@@ -857,7 +496,7 @@ const SalaryCalculator = () => {
const isNonChina = selectedCountry !== 'CN';
if (isNonChina) {
// 非中国地区,转回本地货币
const pppFactor = pppFactors[selectedCountry]?.factor || 4.19;
const pppFactor = pppFactors[selectedCountry] || 4.19;
return (dailySalaryInCNY * pppFactor / 4.19).toFixed(2);
} else {
return dailySalaryInCNY.toFixed(2);
@@ -1077,12 +716,12 @@ const SalaryCalculator = () => {
// 获取当前选择的国家名称(根据语言)
const getCountryName = useCallback((countryCode: string) => {
if (language === 'en') {
return countryNamesEn[countryCode] || pppFactors[countryCode]?.name || 'Unknown';
return countryNames.en[countryCode] || countryCode || 'Unknown';
}
if (language === 'ja') {
return countryNamesJp[countryCode] || pppFactors[countryCode]?.name || '不明';
return countryNames.ja[countryCode] || countryCode || '不明';
}
return pppFactors[countryCode]?.name || 'Unknown';
return countryNames.zh[countryCode] || countryCode || '未知';
}, [language]);
// 获取当前选择国家的货币符号
@@ -1108,7 +747,7 @@ const SalaryCalculator = () => {
</div>
<div className="flex items-center justify-center gap-3 mb-2">
<p className="text-sm text-gray-500 dark:text-gray-400">v5.1.1</p>
<p className="text-sm text-gray-500 dark:text-gray-400">v5.2.1</p>
<a
href="https://github.com/zippland/worth-calculator"
target="_blank"
@@ -1119,13 +758,13 @@ const SalaryCalculator = () => {
{t('github')}
</a>
<a
href="https://www.xiaohongshu.com/user/profile/6355d5c4000000001f0292bf"
href="https://www.xiaohongshu.com/user/profile/623e8b080000000010007721?xsec_token=YBzoLUB4HsSITTBOgPAXY-0Gvqvn3HqHpcDeA3sHhDh-M%3D&xsec_source=app_share&xhsshare=CopyLink&appuid=5c5d5259000000001d00ef04&apptime=1743400694&share_id=b9bfcd5090f9473daf5c1d1dc3eb0921&share_channel=copy_link"
target="_blank"
rel="noopener noreferrer"
className="text-sm text-gray-500 hover:text-blue-500 dark:text-gray-400 dark:hover:text-blue-400 transition-colors flex items-center gap-1"
>
<Book className="h-3.5 w-3.5" />
{language === 'zh' ? t('xiaohongshu') : 'Rednote'}
{t('xiaohongshu')}
</a>
</div>
@@ -1175,22 +814,25 @@ const SalaryCalculator = () => {
</span>
</label>
<select
id="country"
name="country"
value={selectedCountry}
onChange={(e) => setSelectedCountry(e.target.value)}
className="mt-1 block w-full rounded-md border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-gray-900 dark:text-white"
className="mt-1 block w-full py-2 px-3 border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm"
>
{Object.keys(pppFactors).sort((a, b) => {
const nameA = getCountryName(a);
const nameB = getCountryName(b);
return nameA.localeCompare(nameB);
// 确保中国始终排在第一位
if (a === 'CN') return -1;
if (b === 'CN') return 1;
return getCountryName(a).localeCompare(getCountryName(b));
}).map(code => (
<option key={code} value={code}>
{getCountryName(code)} ({pppFactors[code].factor})
{getCountryName(code)} ({pppFactors[code].toFixed(2)})
</option>
))}
</select>
<p className="mt-1 text-xs text-gray-500 dark:text-gray-400">
{t('selected_ppp')}: {pppFactors[selectedCountry]?.factor || 4.19}
{t('selected_ppp')}: {(pppFactors[selectedCountry] || 4.19).toFixed(2)}
</p>
</div>