Python3.6国际化

安装完Python软件之后,在Python安装目录下面会自带国际化的程序。比如:我的Python安装目录为D:\ProgramData\Anaconda3,因此国际化程序所在目录就是D:\ProgramData\Anaconda3\Tools\i18n。其国际化目录下面包含几个文件:
这里写图片描述
Python国际化可以根据以下四个步骤来做:
1>首先将需要国际化的目标字符串使用_()包起来,注意:如果目标字符串中含有格式化字符串,只需要把字符串部分包起来即可。
2>使用上面的Python国际化程序pygettext来生成pot文件
3>使用poedit软件编辑pot文件,选择要翻译的目标语言,翻译pot文件
4>将翻译完毕的目标文件保存到”locale/目标语言编码/LS_MESSAGES”目录,如果要保存的目录不存在,需要手动创建。
以网上的一段程序guess.py为例:

# This is a guess the number game.
import random

guessesTaken = 0

print('Hello! What is your name?')
myName = input()

number = random.randint(1, 20)
print('Well, %s, I am thinking of a number between 1 and 20.' % (myName))

while guessesTaken < 6:
    print('Take a guess.')
    guess = input()
    guess = int(guess)

    guessesTaken = guessesTaken + 1

    if guess < number:
        print('Your guess is too low.')

    if guess > number:
        print('Your guess is too high.')

    if guess == number:
        break

if guess == number:
    guessesTaken = str(guessesTaken)
    print('Good job, %s! You guessed my number in %s guesses!' % (myName, guessesTaken))

if guess != number:
    number = str(number)
    print('Nope. The number I was thinking of was %s.' % (number))

执行国际化第一步的结果如下:

# This is a guess the number game.
import random

guessesTaken = 0

print(_('Hello! What is your name?'))
myName = input()

number = random.randint(1, 20)
print(_('Well, %s, I am thinking of a number between 1 and 20.') % (myName))

while guessesTaken < 6:
    print(_('Take a guess.'))
    guess = input()
    guess = int(guess)

    guessesTaken = guessesTaken + 1

    if guess < number:
        print(_('Your guess is too low.'))

    if guess > number:
        print(_('Your guess is too high.'))

    if guess == number:
        break

if guess == number:
    guessesTaken = str(guessesTaken)
    print(_('Good job, %s! You guessed my number in %s guesses!') % (myName, guessesTaken))

if guess != number:
    number = str(number)
    print(_('Nope. The number I was thinking of was %s.') % (number))

执行国际化第二步的结果,生成的pot文件内容如下:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2018-02-07 13:10+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=cp936\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"


#: guess.py:10
msgid "Hello! What is your name?"
msgstr ""

#: guess.py:14
msgid "Well, %s, I am thinking of a number between 1 and 20."
msgstr ""

#: guess.py:17
msgid "Take a guess."
msgstr ""

#: guess.py:24
msgid "Your guess is too low."
msgstr ""

#: guess.py:27
msgid "Your guess is too high."
msgstr ""

#: guess.py:34
msgid "Good job, %s! You guessed my number in %s guesses!"
msgstr ""

#: guess.py:38
msgid "Nope. The number I was thinking of was %s."
msgstr ""

执行国际化第三步的结果,最终翻译结果如下:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2018-02-07 13:10+0800\n"
"PO-Revision-Date: 2018-02-07 13:38+0800\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 2.0.6\n"
"Last-Translator: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: zh_CN\n"

#: guess.py:10
msgid "Hello! What is your name?"
msgstr "你好,你的名字叫什么?"

#: guess.py:14
msgid "Well, %s, I am thinking of a number between 1 and 20."
msgstr "好吧,%s,我正在考虑的数字在1到20之间。"

#: guess.py:17
msgid "Take a guess."
msgstr "猜一猜。"

#: guess.py:24
msgid "Your guess is too low."
msgstr "你的猜测太小。"

#: guess.py:27
msgid "Your guess is too high."
msgstr "你的猜测结果太大。"

#: guess.py:34
msgid "Good job, %s! You guessed my number in %s guesses!"
msgstr "干得漂亮,%s!你猜了%s次就猜对了我的数字!"

#: guess.py:38
msgid "Nope. The number I was thinking of was %s."
msgstr "不对,我正在考虑的数字是%s。"

执行国际化的第四步,pot文件内容翻译后,保存到项目根目录下locale/zh_Hans/LC_MESSAGES文件夹下,我的项目目录结构如下:
这里写图片描述
最终保存后的翻译文件为guess.po和guess.mo(guess.po编译后生成的文件。)

至此,Python国际化已经完成。
下面进入测试,需要完善guess.py程序文件,完善后内容如下:

# This is a guess the number game.
import random
import gettext
zh_Hans = gettext.translation('guess', localedir='locale', languages=['zh_Hans'])
zh_Hans.install()


guessesTaken = 0

print(_('Hello! What is your name?'))
myName = input()

number = random.randint(1, 20)
print(_('Well, %s, I am thinking of a number between 1 and 20.') % (myName))

while guessesTaken < 6:
    print(_('Take a guess.'))
    guess = input()
    guess = int(guess)

    guessesTaken = guessesTaken + 1

    if guess < number:
        print(_('Your guess is too low.'))

    if guess > number:
        print(_('Your guess is too high.'))

    if guess == number:
        break

if guess == number:
    guessesTaken = str(guessesTaken)
    print(_('Good job, %s! You guessed my number in %s guesses!') % (myName, guessesTaken))

if guess != number:
    number = str(number)
    print(_('Nope. The number I was thinking of was %s.') % (number))

测试结果如下:
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python UI自动化测试通常需要使用配置文件来保存测试过程中需要使用的各种配置项,例如测试URL、测试账号密码、浏览器驱动路径等。常见的配置文件格式有INI、JSON、YAML等。 下面以INI格式的配置文件为例,介绍如何在Python UI自动化测试中使用配置文件: 1. 创建配置文件 在项目的根目录下创建一个名为 `config.ini` 的文件,并在文件中添加需要用到的配置项,例如: ```ini [login] username = admin password = 123456 [web] url = https://www.example.com browser = chrome driver_path = /path/to/chromedriver ``` 在上面的示例中,我们定义了两个配置项,一个是登录信息,包括用户名和密码;另一个是Web测试信息,包括URL、浏览器类型和浏览器驱动路径。 2. 读取配置文件 在Python UI自动化测试中,我们可以使用Python内置的configparser模块来读取INI格式的配置文件。具体使用方法如下: ```python import configparser # 创建ConfigParser对象 config = configparser.ConfigParser() # 读取配置文件 config.read('config.ini') # 获取配置项中的值 username = config.get('login', 'username') password = config.get('login', 'password') url = config.get('web', 'url') browser = config.get('web', 'browser') driver_path = config.get('web', 'driver_path') ``` 在上面的示例中,我们首先创建了一个ConfigParser对象,然后使用 `config.read()` 方法来读取配置文件。最后,使用 `config.get()` 方法来获取配置项中的值。 3. 在测试中使用配置项 在实际的测试中,我们可以使用读取到的配置项来进行测试,例如: ```python from selenium import webdriver # 创建浏览器驱动 if browser == 'chrome': driver = webdriver.Chrome(executable_path=driver_path) elif browser == 'firefox': driver = webdriver.Firefox(executable_path=driver_path) # 打开网页 driver.get(url) # 输入登录信息 username_field = driver.find_element_by_name('username') username_field.send_keys(username) password_field = driver.find_element_by_name('password') password_field.send_keys(password) password_field.submit() # 进行其他测试操作 # ... ``` 在上面的示例中,我们根据配置文件中的浏览器类型和驱动路径来创建浏览器驱动对象,并根据配置文件中的URL打开网页。我们还使用配置文件中的登录信息来输入用户名和密码进行登录。 通过使用配置文件,我们可以方便地管理测试过程中需要使用的各种配置项,并且在需要修改配置时只需要修改配置文件即可,不需要修改测试代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值